Django 中的 Celery Periodic Tasks 不是 运行
Celery Periodic Tasks not running in Django
文件结构
proj/proj/
celery.py
(and other files)
/sitesettings/
tasks.py
(and other files)
celery.py
app = Celery('mooncake',broker_url = 'amqp://')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
sitesettings/tasks.py
from __future__ import absolute_import, unicode_literals
from comma.models import Post
from mooncake.celery import app
app.conf.beat_schedule = {
'every-5-seconds': {
'task': 'sitesettings.tasks.statisticsTag',
'schedule': 5.0,
'args': ()
},
}
@app.task
def statisticsTag():
print(Post.objects.all()[0])
和 运行 它与
celery -A proj beat -l info
它与
一起输出
[2019-02-22 18:21:08,346: INFO/MainProcess] Scheduler: Sending due task every-5-seconds (sitesettings.tasks.statisticsTag)
但没有进一步的输出。
我曾经尝试将它写在 proj/celery.py 中,但它不能 运行 因为我必须从另一个应用程序导入,它退出时出现 "app not loaded" 错误。那我该怎么办呢?
您调用的用于启动 celery celery -A proj beat -l info
的命令是 celery 的 starting a beat scheduler instance,它将到期任务发送到工作实例。
您还需要 start a worker server 来执行那些到期的任务。您可以使用命令 celery -A proj worker -l info
启动一个 celery worker。这需要 运行ning 同时 因为你的调度程序是 运行ning.
或者您可以 运行 工人 with embedded beat scheduler celery -A proj worker -B -l info
但不建议将其用于生产。
文件结构
proj/proj/
celery.py
(and other files)
/sitesettings/
tasks.py
(and other files)
celery.py
app = Celery('mooncake',broker_url = 'amqp://')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
sitesettings/tasks.py
from __future__ import absolute_import, unicode_literals
from comma.models import Post
from mooncake.celery import app
app.conf.beat_schedule = {
'every-5-seconds': {
'task': 'sitesettings.tasks.statisticsTag',
'schedule': 5.0,
'args': ()
},
}
@app.task
def statisticsTag():
print(Post.objects.all()[0])
和 运行 它与
celery -A proj beat -l info
它与
一起输出[2019-02-22 18:21:08,346: INFO/MainProcess] Scheduler: Sending due task every-5-seconds (sitesettings.tasks.statisticsTag)
但没有进一步的输出。 我曾经尝试将它写在 proj/celery.py 中,但它不能 运行 因为我必须从另一个应用程序导入,它退出时出现 "app not loaded" 错误。那我该怎么办呢?
您调用的用于启动 celery celery -A proj beat -l info
的命令是 celery 的 starting a beat scheduler instance,它将到期任务发送到工作实例。
您还需要 start a worker server 来执行那些到期的任务。您可以使用命令 celery -A proj worker -l info
启动一个 celery worker。这需要 运行ning 同时 因为你的调度程序是 运行ning.
或者您可以 运行 工人 with embedded beat scheduler celery -A proj worker -B -l info
但不建议将其用于生产。