Python 为什么芹菜周期性任务不起作用?(Django)

Python 为什么芹菜周期性任务不起作用?(Django),python,django,celery,periodic-task,Python,Django,Celery,Periodic Task,它不会返回任何错误,但是当运行Cellery-A mysite beat-l info和Cellery-A mysite worker-l info时,任务不会发生。在另一个Django项目中尝试相同的结构时,效果很好。 救命啊 我的代码: mysite/settings.py(仅芹菜部分) mysite/init.py mysite/芹菜.py 个人/任务.py PS:如果有必要,我可以通过删除app.py和app.pyc(在个人文件下)来发布芹菜的输出,芹菜的工作非常正常。Python可能试

它不会返回任何错误,但是当运行
Cellery-A mysite beat-l info
Cellery-A mysite worker-l info
时,任务不会发生。在另一个Django项目中尝试相同的结构时,效果很好。 救命啊

我的代码:

mysite/settings.py(仅芹菜部分)

mysite/init.py

mysite/芹菜.py

个人/任务.py


PS:如果有必要,我可以通过删除app.py和app.pyc(在个人文件下)来发布芹菜的输出,芹菜的工作非常正常。Python可能试图以某种方式导入模块,奇怪的是它没有返回任何错误消息。

对于找到此页面的其他人来说:如果您正在使用Docker,并且在开发过程中更改了芹菜节拍设置,那么容器很有可能有旧的
.pyc
文件用作缓存


要避免此错误,请从repo中删除所有*.pyc文件,并将
***.pyc
添加到
.dockerginore

您必须设置心跳-我也这么认为,@dmitryro,但是该任务在另一个项目中运行完全正常(只需更改文件的名称)。心跳是特定于环境的(Docker、Vagrant、VM)是一个可能在当前环境中运行不一致的进程-您需要验证此进程是否在该特定环境中运行,并相应地调整配置。@dmitryro我完全理解这一点(甚至在该主题中做了一些进一步的研究),settings.py部分与我的另一个网站完全相同,它工作正常(即使没有心跳),但另一个网站工作正常,而这个网站却没有。心跳由以下命令提供:芹菜-A mysite beat-l info
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'
from __future__ import absolute_import
from .celery import app as celery_app
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))
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")