【发布时间】:2018-12-16 11:02:50
【问题描述】:
它不会返回任何错误,但是在运行 celery -A mysite beat -l info 和 celery -A mysite worker -l info 时任务不会发生。在另一个 Django 项目中尝试相同的结构时,它工作正常。
请帮忙!
我的代码:
mysite/settings.py(仅 CELERY 部分)
BROKER_URL = 'redis://localhost:6379'
CELERY_RESULT_BACKEND = 'redis://localhost:6379'
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_TIMEZONE = 'Africa/Nairobi'
mysite/init.py
from __future__ import absolute_import
from .celery import app as celery_app
mysite/celery.py
from __future__ import absolute_import
import os
from celery import Celery
from django.conf import settings
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings')
app = Celery('mysite')
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
@app.task(bind=True)
def debug_task(self):
print('Request: {0!r}'.format(self.request))
personal/tasks.py
from celery.task.schedules import crontab
from celery.decorators import periodic_task
from celery.utils.log import get_task_logger
logger = get_task_logger(__name__)
@periodic_task(
run_every=(crontab(minute='*/1')),
name="task_deleteFiles",
ignore_result=True
)
def task_deleteFiles():
logger.info("Files Deleted")
PS:如有必要,我可以发布 Celery 的输出
【问题讨论】:
-
@dmitryro 我也这么认为,但是该任务在另一个项目中完全正常(只需更改文件中的名称)。
-
心跳是特定于环境的(Docker、Vagrant、VM),并且是一个进程,在您当前的环境中可能无法始终如一地运行 - 您需要验证此进程是否正在为此特定环境运行并相应地调整配置。
-
@dmitryro 我完全理解(甚至对该主题进行了一些进一步的研究),settings.py 部分与我的另一个网站相同,并且工作正常(即使没有心跳),不知何故其他网站有效,而这个无效。
-
另外心跳由命令提供:celery -A mysite beat -l info
标签: python django celery periodic-task