在setting中配置队列和定时任务

  • from kombu import Queue

  • from datetime import timedelta

  • CELERY_DEFAULT_QUEUE = 'worker_queue'

  • CELERY_QUEUES = (

    Queue("beat_queue", routing_key="beat_queue"),

    Queue("worker_queue", routing_key="worker_queue"),

    )

  • CELERYBEAT_SCHEDULE = {

  • 'task2':{

  • 'task':'course.tasks.task2',

  • 'schedule':timedelta(seconds=5),

  • 'args':(99,3),

  • 'options':{

  • 'queue':'beat_tasks'

  • }

  • }

  • }

启动beat:

python manage.py celery beat -l INFO

python manage.py celery worker -l INFO -Q beat_tasks

一条命令启动worker和beat

  • python manage.py celery worker -l INFO -B

注:

  • 在定时任务指定task的时候有两种方法

    • 指定任务的路径

      • course.tasks.task2

    • 在任务的task上添加个name参数,然后在定时任务的task中指定改name即可

      • @task(name='task2')

      • 'task':'task2',

  • 注意,如果指定了name,则必须使用name,而不能使用任务的路径