簡體   English   中英

Django芹菜周期性任務沒有運行(Heroku)?

[英]Django Celery Periodic Task not running (Heroku)?

我有一個我用Heroku部署的Django應用程序。 我正在嘗試用芹菜每分鍾創建一個周期性任務。 但是,當我使用以下命令觀察worker的日志時:

heroku logs -t -p worker 

我沒有看到我的任務正在執行。 也許我有一個缺失的步驟? 這是我的配置如下......

Procfile

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)

有一點需要補充。 當我使用python shell和“delay()”命令運行任務時,任務確實運行(它顯示在日志中) - 但它只運行一次且僅在執行時運行。

您需要單獨的工作人員來執行節拍過程(負責執行定期任務):

web: gunicorn activiist.wsgi --log-file -
worker: celery worker --app=trending.tasks.app
beat: celery --app=trending.tasks.app

工作人員不需要定期任務,因此可以省略相關行。 另一種可能性是在工作人員中嵌入節拍:

web: gunicorn activiist.wsgi --log-file -
worker: celery worker --app=trending.tasks.app -B

但引用芹菜文件

你也可以通過啟用worker -B選項來開始在worker中嵌入beat,如果你永遠不會運行多個worker節點,這很方便,但它並不常用,因此不推薦用於生產用途

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM