【问题标题】:celery periodic tasks not executing芹菜定期任务未执行
【发布时间】:2017-04-11 21:09:20
【问题描述】:

我正在学习 celery,我创建了一个项目来测试我的配置。我根据最新的文档安装了celery==4.0.0django-celery-beat==1.0.1

在 drf_project(manage.py 的主项目目录)/drf_project/celery.py

from __future__ import absolute_import, unicode_literals
from celery import Celery
import os
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'drf_project.settings')
app = Celery('drf_project')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()

在 drf_project/drf_project/settings.py 中

INSTALLED_APPS += ('django_celery_beat',)
CELERYBEAT_SCHEDULE = {
    "test_1": {
        "task": "tasks.print_test",
        "schedule": timedelta(seconds=2),
    },
}

在 drf_project/drf_project/init.py

from __future__ import absolute_import, unicode_literals
from .celery import app as celery_app

__all__ = ['celery_app']

在我的 user_management 应用程序 (drf_project/user_mangement/) 中,我添加了一个 tasks.py

from celery import Celery
from time import strftime

app = Celery()

@app.task
def print_test():
    print strftime('%Y-%m-%d %H:%M:%S')
    with open('abc.txt', 'ab+') as test_file:
        test_file.writeline(strftime('%Y-%m-%d %H:%M:%S'))

当我在不同的终端运行 celery worker 和我的 django 项目开发服务器时:

 celery -A drf_project worker -l info

 python manage.py runserver

我可以在 celery 日志中看到我的任务,例如:

[tasks]
   . user_management.tasks.print_test

但它没有执行。我也没有收到任何错误。所以我做错了什么?我按照 celery 的官方文档。

【问题讨论】:

  • 解决办法是什么??我也面临同样的问题
  • 检查标记的答案。文档说您已经单独运行了调度程序。

标签: python django celery


【解决方案1】:

要运行周期性任务,您必须运行两个服务:celery beatcelery worker

您可以在following页面底部找到更多信息。

【讨论】:

  • 我通过celery -A drf_project beat启动了节拍服务。但是任务仍然没有执行,我在 django 服务器和 celery 的任何地方都看不到某种日志。
  • 我花了好几天才知道。节拍只是在到期时发送任务。这些任务正在那里排队。因此,您必须至少启动一个工作人员,以便挑选并执行这些任务!
  • @ManishGupta 你能根据 DatTT 的评论更新你的答案吗
  • @DaTT,你救了我几天。 ;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-16
  • 2018-03-07
  • 1970-01-01
  • 1970-01-01
  • 2020-11-03
  • 1970-01-01
  • 2012-07-30
相关资源
最近更新 更多