char 与varchar 以及 utf8和 utf8mb4 celery的定时任务

wzh366 / 2024-03-22 / 原文

 char varchar 数字代表什么
char是一个固定长度的字段,其中的数字代表该字段可以存储的最大字符数。
例如,char(10)意味着该字段可以存储最多10个字符的字符串。
如果存储的字符串长度小于定义的长度,剩余的部分会用空格填充。 varchar是一个可变长度的字段,其中的数字代表该字段可以存储的最大字符数。
例如,varchar(
255)意味着该字段可以存储最多255个字符的字符串。
如果存储的字符串长度小于定义的长度,不会用空格填充,只会占用实际需要的空间。  int(1)  数字代表什么 对于int(
1),这里的数字并不代表整数的大小或长度,而是指定了显示宽度。
在大多数情况下,这个数字对存储的值没有影响,它主要用于显示时的对齐。
int类型的字段可以存储从-2147483648到2147483647的整数(对于有符号整数)。 utf8  和 utf8mb4
’utf8和utf8mb4都是字符编码格式,用于定义字符在数据库中如何存储。 utf8是一个编码格式,可以表示最多3个字节的Unicode字符。
这意味着它可以支持基本的多语言字符集,但是不能支持所有的Unicode字符,如一些特殊的表情符号或者古文字。 utf8mb4是utf8的超集,可以表示最多4个字节的Unicode字符。
这使得它可以支持所有Unicode字符,包括那些需要4个字节的字符,如一些表情符号。
因此,utf8mb4是更广泛和完整的字符编码,通常推荐使用它来确保字符编码的兼容性和完整性。

 

 

celery定时任务

**1. 安装Celery**

如果你还没安装Celery,可以通过pip安装:

```bash
pip install celery
```

**2. 创建Celery实例**

创建一个名为`celery_app.py`的Python文件,并在其中初始化Celery实例。

```python
from celery import Celery

app = Celery('my_celery_app',
broker='amqp://guest:guest@localhost', # 使用RabbitMQ作为中间件
backend='rpc://', # 结果后端(可选)
include=['tasks']) # 指定包含的模块,tasks.py是我们将要编写定时任务的文件
```

**3. 配置定时任务**

在`tasks.py`文件中,定义你的定时执行的任务。

```python
from celery_app import app

@app.task
def add(x, y):
return x + y
```

接下来,配置Celery的定时任务,通常通过`beat_schedule`来设置。还需要在`celery_app.py`中进行配置。

```python
from datetime import timedelta

app.conf.beat_schedule = {
'add-every-30-seconds': {
'task': 'tasks.add',
'schedule': timedelta(seconds=30), # 每30秒执行一次
'args': (16, 16), # 传递给任务的参数
},
}
```

**4. 运行Celery Worker和Celery Beat**

首先,需要启动Celery Worker来执行任务。

```bash
celery -A celery_app worker --loglevel=info
```

然后,启动Celery Beat来调度定时任务。

```bash
celery -A celery_app beat --loglevel=info
```

为了在单个命令中同时运行Worker和Beat,可以使用:

```bash
celery -A celery_app worker --beat --loglevel=info
```

至此,`add`任务将每30秒执行一次,并打印出任务执行的结果。

**注意**: 在实际部署中,可能需要考虑用supervisor、systemd等工具来管理Celery进程,以确保其稳定运行。