Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django芹菜定期任务未运行(Heroku)?_Python_Django_Heroku_Celery - Fatal编程技术网

Python Django芹菜定期任务未运行(Heroku)?

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一起部署的Django应用程序。我正在尝试使用芹菜每分钟创建一个周期性任务。但是,当我使用以下命令观察worker的日志时:

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节点,这将非常方便,但它并不常用,因此不建议在生产中使用