Python Django芹菜定期任务未运行(Heroku)?
我有一个与Heroku一起部署的Django应用程序。我正在尝试使用芹菜每分钟创建一个周期性任务。但是,当我使用以下命令观察worker的日志时:Python Django芹菜定期任务未运行(Heroku)?,python,django,heroku,celery,Python,Django,Heroku,Celery,我有一个与Heroku一起部署的Django应用程序。我正在尝试使用芹菜每分钟创建一个周期性任务。但是,当我使用以下命令观察worker的日志时: heroku logs -t -p worker 我没有看到我的任务被执行。也许我错过了一步?这是我下面的配置 程序文件 web: gunicorn activiist.wsgi --log-file - worker: celery worker --app=trending.tasks.app Tasks.py import celery
heroku logs -t -p worker
我没有看到我的任务被执行。也许我错过了一步?这是我下面的配置
程序文件
web: gunicorn activiist.wsgi --log-file -
worker: celery worker --app=trending.tasks.app
Tasks.py
import celery
app = celery.Celery('activiist')
import os
from celery.schedules import crontab
from celery.task import periodic_task
from django.conf import settings
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
app.conf.update(BROKER_URL=os.environ['REDIS_URL'],
CELERY_RESULT_BACKEND=os.environ['REDIS_URL'])
os.environ['DJANGO_SETTINGS_MODULE'] = 'activiist.settings'
from trending.views import *
@periodic_task(run_every=crontab())
def add():
getarticles(30)
还有一件事要补充。当我使用pythonshell和“delay()”命令运行该任务时,该任务确实会运行(它显示在日志中)——但它只运行一次,并且只在执行时运行 beat流程需要单独的工作人员(负责执行定期任务): 定期任务不需要工人,因此可以省略相关行。另一种可能是将节拍嵌入工人体内:
web: gunicorn activiist.wsgi --log-file -
worker: celery worker --app=trending.tasks.app -B
但引用以下的话:
您还可以通过启用workers-B选项在worker中开始嵌入beat,如果您永远不会运行多个worker节点,这将非常方便,但它并不常用,因此不建议在生产中使用
beat流程需要单独的工作人员(负责执行定期任务): 定期任务不需要工人,因此可以省略相关行。另一种可能是将节拍嵌入工人体内:
web: gunicorn activiist.wsgi --log-file -
worker: celery worker --app=trending.tasks.app -B
但引用以下的话:
您还可以通过启用workers-B选项在worker中开始嵌入beat,如果您永远不会运行多个worker节点,这将非常方便,但它并不常用,因此不建议在生产中使用