您好我添加了一个名为" 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
答案 0 :(得分:0)
您需要在项目的主应用程序中使用名为celery.py的文件,该文件导入celery并注册需要完成的任务(通常使用Celery对象的autodiscover_tasks)。见这里:
http://docs.celeryproject.org/en/latest/django/first-steps-with-django.html