如何解决芹菜节拍任务未执行
我正在尝试通过celery-beat功能扩展django应用程序。我的项目具有以下结构
tools #project name
---manage.py
---webhooks
---tasks.py
---tools
---celery.py
---settings.py
---__init__.py
celery.py内部
from celery import Celery
from celery.schedules import crontab
app=Celery('tools')
app.config_from_object('django.conf:settings',namespace='CELERY')
app.autodiscover_tasks()
@app.task
def add():
print('tested')
在 init .py文件内部
from .celery import app as celery_app
__all__= ('celery_app',)
settings.py文件内部
#I use Amazon SQS as broker CELERY_broKER_URL="sqs://{aws_access_key}:{aws_secret_key}@".format(aws_access_key=aws_access_key,aws_secret_key=aws_secret_key,)
CELERY_TIMEZONE='Europe/Moscow'
CELERY_BEAT_SHEDULE={
'test_beat_tasks':{
'task':'webhooks.tasks.summary','schedule':crontab(minute="*/1")
},}
在webhooks / tasks.py中,我将crontab任务定义为如下
from celery import Celery
from tools.celery import app
@app.task(name='summary')
def summary():
print('cron task test')
所有这些之后,我在一个终端中按如下方式运行了工作者
celery -A tools worker -l INFO
这是输出
-------------- celery@helenisli1 v4.4.7 (cliffs) --- ***** -----
-- ******* ---- Linux-4.4.0-193-generic-x86_64-with-Ubuntu-16.04-xenial 2020-11-12 17:10:10
- *** --- * ---
- ** ---------- [config]
- ** ---------- .> app: tools:0x7f49f604f898 - ** ---------- .> transport: sqs://AKIA5PVSI6ZSFX5N3:**@localhost// -
** ---------- .> results: disabled:// - *** --- * --- .> concurrency: 1 (prefork)
-- ******* ---- .> task events:
OFF (enable -E to monitor tasks in this worker)
--- ***** ----- -------------- [queues]
.> celery exchange=celery(direct) key=celery
[tasks]
. summary
. tools.celery.add
[2020-11-12 17:10:10,177: INFO/Beat] beat: Starting...
[2020-11-12 17:10:10,666: INFO/MainProcess] Connected to sqs://AKIA5PVSI6ZQM3SFX5N3:**@localhost//
[2020-11-12 17:10:11,218: WARNING/MainProcess] /home/isli/05/env/lib/python3.5/site-packages/celery/fixups/django.py:206:
[2020-11-12 17:10:11,218: INFO/MainProcess] celery@helenisli1 ready.
在另一个终端上运行芹菜节拍
celery -A tools beat -l DEBUG
芹菜节拍执行命令执行以下输出
LocalTime -> 2020-11-12 17:04:30
Configuration ->
. broker -> sqs://AKIA5PVSI6ZQM5N3:**@localhost//
. loader -> celery.loaders.app.AppLoader
. scheduler -> celery.beat.PersistentScheduler
. db -> celerybeat-schedule
. logfile -> [stderr]@%DEBUG
. maxinterval -> 5.00 minutes (300s)
[2020-11-12 17:04:30,169:
DEBUG/MainProcess] Setting default socket timeout to 30
[2020-11-12 17:04:30,169: INFO/MainProcess] beat: Starting...
[2020-11-12 17:04:30,176: DEBUG/MainProcess] Current schedule:
<ScheduleEntry:
celery.backend_cleanup
celery.backend_cleanup() <crontab: 0 4 * * * (m/h/d/dM/MY)>
[2020-11-12 17:04:30,176:
DEBUG/MainProcess] beat: Ticking with max interval->5.00 minutes
[2020-11-12 17:04:30,177: DEBUG/MainProcess] beat: Waking up in 5.00 minutes.
我看到我的命令没有打印我的摘要任务的输出。 但是在shell中执行任务时
python manage.py shell
>>>from webhooks.tasks import summary
summary.delay()
在我运行worker的终端中执行任务之后
我做错了什么?谁能指导我?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。