芹菜周期性任务没有用tasks.py执行

时间:2017-03-27 11:18:50

标签: django django-celery celerybeat

您好我添加了一个名为" schedule_stop"并在设置中注册了应用程序。

现在添加了一个名为tasks.py的新文件,以下是文件的内容

  from celery.task.schedules import crontab
  from celery.decorators import periodic_task
  from django.conf import settings
  import logging

  logger = logging.getLogger('app.main')

  @periodic_task(run_every=crontab(minute='*/1'), options={'queue':settings.APP_CORE_QUEUE})
  def delete_inactive_task():
        logger.info('log value')

settings.APP_CORE_QUEUE = app_core_queue

的值

所需的芹菜过程如下运行,

ubuntu    5711  0.0  1.0 188564 41172 pts/0    S+   10:28   0:00 /home/ubuntu/devbuild/venv/bin/python /home/ubuntu/devbuild/venv/octopus/../bin/django-admin celery -A app beat
ubuntu    5712  0.0  1.2 218344 52428 pts/0    S+   10:28   0:00 /home/ubuntu/devbuild/venv/bin/python /home/ubuntu/devbuild/venv/app/../bin/django-admin celery worker -Q app_core_queue
ubuntu    5733  0.0  1.1 216484 47192 pts/0    S+   10:28   0:00 /home/ubuntu/devbuild/venv/bin/python /home/ubuntu/devbuild/venv/app/../bin/django-admin celery worker -Q app_core_queue

但仍然在函数delete_intractive_task()之上,每隔一分钟就会执行一次。如何调试是什么问题?

在应用程序启动期间,

tasks.py文件甚至没有被执行,即使这个tasks.py文件中有任何语法错误也没有给出任何错误

以下是文件结构

schedule_stop/
   ├── api.py
   ├── __init__.py
   ├── __init__.pyc
   ├── tasks.py
   ├── urls.py
   └── views.py

1 个答案:

答案 0 :(得分:0)

您需要在项目的主应用程序中使用名为celery.py的文件,该文件导入celery并注册需要完成的任务(通常使用Celery对象的autodiscover_tasks)。见这里:

http://docs.celeryproject.org/en/latest/django/first-steps-with-django.html