首页 > 解决方案 > 为什么 Celery 周期性任务不起作用?(姜戈)

问题描述

celery -A mysite beat -l info它不会返回任何错误,但是在运行时celery -A mysite worker -l info任务不会发生。在另一个 Django 项目中尝试相同的结构时,它工作正常。请帮忙!

我的代码:

mysite/settings.py(只有芹菜部分)

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'

我的网站/初始化.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))

个人/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 的输出

标签: pythondjangoceleryperiodic-task

解决方案


显然,通过删除 app.py 和 app.pyc (在个人文件下)芹菜工作完全正常。Python 可能试图以某种方式导入模块,奇怪的是它没有返回任何错误消息。


推荐阅读