django celery 定时任务demo
时间: 2023-07-18 14:30:40 浏览: 97
好的,以下是一个使用 Django 和 Celery 实现定时任务的示例:
1. 首先安装 celery 和 django-celery-beat:
```
pip install celery django-celery-beat
```
2. 在 Django 项目的 settings.py 文件中添加以下配置:
```
INSTALLED_APPS = [
# ...
'django_celery_beat',
]
CELERY_BROKER_URL = 'redis://localhost:6379/0'
CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_RESULT_SERIALIZER = 'json'
CELERY_TASK_SERIALIZER = 'json'
CELERY_TIMEZONE = 'Asia/Shanghai'
# 添加定时任务的配置
CELERY_BEAT_SCHEDULE = {
'task1': {
'task': 'yourapp.tasks.task1',
'schedule': crontab(minute='*/5'), # 每5分钟执行一次
},
'task2': {
'task': 'yourapp.tasks.task2',
'schedule': crontab(hour=1, minute=0), # 每天凌晨1点执行
},
}
```
其中,CELERY_BROKER_URL 和 CELERY_RESULT_BACKEND 是 celery 使用 redis 存储任务队列和结果的配置,需要根据实际情况修改。CELERY_BEAT_SCHEDULE 是定时任务的配置,具体格式可以参考 Celery 文档。这里演示了两个定时任务,分别是每5分钟执行一次的 task1 和每天凌晨1点执行的 task2。
3. 在 Django 项目中新建一个名为 tasks.py 的文件,编写定时任务的代码:
```
from celery import shared_task
@shared_task
def task1():
# 在这里编写 task1 的逻辑
pass
@shared_task
def task2():
# 在这里编写 task2 的逻辑
pass
```
4. 启动 celery:
```
celery -A yourproject worker -l info -B
```
其中,-A 参数指定 celery 的应用名,-l 参数指定日志级别,-B 参数表示启动 celery 定时任务。
至此,就完成了 Django 和 Celery 的定时任务配置。
阅读全文