python - 芹菜节拍任务未执行
问题描述
我正在用 celery beat 在 Django 中学习周期性任务。但是我的任务没有执行。
我的__init__.py
文件:
from __future__ import absolute_import, unicode_literals
from .celery import app as celery_app
__all__ = ('celery_app',)
我的celery.py
文件:
from __future__ import absolute_import, unicode_literals
import os
from celery import Celery
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'new_todo_app.settings')
app = Celery('new_todo_app')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
@app.task(bind=True)
def debug_task(self):
print('Request: {0!r}'.format(self.request))
我的tasks.py
文件:
from celery import Celery
from celery import shared_task
app = Celery('tasks', broker='pyamqp://guest@localhost//')
@shared_task
def progress_bar():
print("Executed every minute")
和我的settings.py
档案
CELERY_BROKER_URL = 'amqp://localhost'
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_ACCEPT_CONTENT = ['json']
CELERY_TIMEZONE = 'Asia/Baku'
CELERY_ENABLE_UTC = True
CELERY_BEAT_SCHEDULE = {
'progress-bar': {
'task': 'app1.tasks.progress_bar',
'schedule': 5.0,
},
}
我通过以下方式运行 celery beat worker:
#celery -A new_todo_app beat -l info
芹菜节拍开始,但任务不执行。我尝试了调试日志记录模式,我得到:
Configuration ->
. broker -> amqp://guest:**@localhost:5672//
. loader -> celery.loaders.app.AppLoader
. scheduler -> celery.beat.PersistentScheduler
. db -> celerybeat-schedule
. logfile -> [stderr]@%DEBUG
. maxinterval -> 5.00 minutes (300s)
[2019-12-04 19:35:24,937: DEBUG/MainProcess] Setting default socket timeout to 30
[2019-12-04 19:35:24,938: INFO/MainProcess] beat: Starting...
[2019-12-04 19:35:24,975: DEBUG/MainProcess] Current schedule:
<ScheduleEntry: progress-bar app1.tasks.progress_bar() <freq: 5.00 seconds>
<ScheduleEntry: celery.backend_cleanup celery.backend_cleanup() <crontab: 0 4 * * * (m/h/d/dM/MY)>
[2019-12-04 19:35:24,975: DEBUG/MainProcess] beat: Ticking with max interval->5.00 minutes
[2019-12-04 19:35:24,977: DEBUG/MainProcess] beat: Waking up in 5.00 minutes.
我刚开始学习 celery,感觉我的配置可能有问题。预先感谢
解决方案
推荐阅读
- matplotlib-basemap - 为 3D 底图填充海洋
- firebase - Firebase 规则让用户查看自己的数据,/jobs 处的错误侦听器失败:permission_denied
- javascript - 如何循环输入输入的数组并根据它们的类型进行分类?
- google-oauth - 强制门户内的谷歌登录不起作用,谷歌不回复消息
- postgresql - 我可以删除视图但保存依赖视图吗?
- python - 使用 Python 登录一个棘手的网站
- c# - 复杂类型模型的Linq查询
- javascript - 检查阵列是否相同有时不起作用?
- c# - 多个 JOINS 与它们之间的条件:LINQ 查询
- unreal-engine4 - 虚幻引擎 4 引用了一个 pawn actor 并拥有它