使用Django Celery定时任务调度
Django Celery是一个基于Python的分布式任务调度框架,可以用来执行异步任务、定时任务等。下面是使用Django Celery进行定时任务调度的详细步骤:
- 安装Django Celery
在项目虚拟环境中执行以下命令安装Django Celery:
pip install django-celery
- 配置Django Celery
在Django项目的settings.py文件中添加以下配置:
# 启用Django Celery CELERY_ENABLE_UTC = True CELERY_TIMEZONE = 'Asia/Shanghai' CELERY_BROKER_URL = 'redis://127.0.0.1:6379/0' CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/0' # 定义Celery任务 CELERY_BEAT_SCHEDULE = { 'print_message': { 'task': 'tasks.print_message', 'schedule': crontab(hour=8, minute=0), 'args': ('pidancode.com',), } }
其中,CELERY_ENABLE_UTC和CELERY_TIMEZONE用于设置时区;CELERY_BROKER_URL和CELERY_RESULT_BACKEND用于设置Celery的消息代理和结果存储;CELERY_BEAT_SCHEDULE用于定义Celery的定时任务。
- 编写Celery任务
在项目中创建tasks.py文件,并定义Celery任务:
from celery import shared_task @shared_task def print_message(msg): print('Message:', msg)
- 启动Celery
在虚拟环境中执行以下命令启动Celery:
celery -A proj worker -l info -B
其中,-A参数用于指定Celery的应用名称;worker表示启动一个Celery工作进程;-l参数用于指定日志级别;-B参数表示启动Celery的定时任务调度器。
- 测试Celery任务
在Django项目中可以通过以下方式调用Celery任务:
from tasks import print_message print_message.delay('pidancode.com')
以上代码会将print_message任务加入到Celery任务队列中,等待Celery工作进程执行。
综上,以上就是使用Django Celery进行定时任务调度的详细步骤和代码演示。在以上示例中,print_message任务会每天8:00打印一条消息“Message: pidancode.com”。
相关文章