使用Django Celery定时任务调度

2023-04-11 00:00:00 django 调度 定时

Django Celery是一个基于Python的分布式任务调度框架,可以用来执行异步任务、定时任务等。下面是使用Django Celery进行定时任务调度的详细步骤:

  1. 安装Django Celery

在项目虚拟环境中执行以下命令安装Django Celery:

pip install django-celery
  1. 配置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的定时任务。

  1. 编写Celery任务

在项目中创建tasks.py文件,并定义Celery任务:

from celery import shared_task

@shared_task
def print_message(msg):
    print('Message:', msg)
  1. 启动Celery

在虚拟环境中执行以下命令启动Celery:

celery -A proj worker -l info -B

其中,-A参数用于指定Celery的应用名称;worker表示启动一个Celery工作进程;-l参数用于指定日志级别;-B参数表示启动Celery的定时任务调度器。

  1. 测试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”。

相关文章