为什么芹菜周期性任务不起作用? (姜戈)
Why is Celery periodic task not working? (Django)
它 returns 没有错误,但是当 运行 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:如有必要,我可以post Celery
的输出
显然通过删除 app.py 和 app.pyc(在个人文件下)celery 工作正常。 Python 可能试图以某种方式导入模块,奇怪的是它没有 return 任何错误消息。
对于找到此页面的其他人:如果您正在使用 Docker 并且在开发过程中更改了 celery beat 设置,那么容器很可能有它正在使用的旧 .pyc
文件作为缓存。
为避免此错误,请从您的存储库中删除所有 *.pyc 文件并将 **/*.pyc
添加到 .dockerignore
。
它 returns 没有错误,但是当 运行 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:如有必要,我可以post Celery
的输出显然通过删除 app.py 和 app.pyc(在个人文件下)celery 工作正常。 Python 可能试图以某种方式导入模块,奇怪的是它没有 return 任何错误消息。
对于找到此页面的其他人:如果您正在使用 Docker 并且在开发过程中更改了 celery beat 设置,那么容器很可能有它正在使用的旧 .pyc
文件作为缓存。
为避免此错误,请从您的存储库中删除所有 *.pyc 文件并将 **/*.pyc
添加到 .dockerignore
。