/ / Django Celer Periodická úloha nie je spustená (Heroku)? - python, django, heroku, zeler

Django Celer Periodická úloha nie je spustená (Heroku)? - python, django, heroku, zeler

Mám aplikáciu Django, ktorú som nasadils Heroukom. Snažím sa používať zeler na vytvorenie periodickej úlohy každú minútu, ale keď pozorujem protokoly pre pracovníka pomocou nasledujúceho príkazu:

heroku logs -t -p worker

Nevidím, že moja úloha bola vykonaná. Možno je to krok, ktorý mi chýba? Toto je moja konfigurácia nižšie ...

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)

Jedna vec, ktorú pridáte. Keď spustim úlohu pomocou shellu pythonu a príkazu "delay ()", úloha skutočne beží (zobrazuje sa v protokoloch), ale spúšťa sa iba raz a iba pri spustení.

odpovede:

-1 pre odpoveď č. 1

Potrebujete oddelenú pracovníkovku na proces tlkotu (ktorý je zodpovedný za vykonávanie pravidelných úloh):

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

Pracovník nie je potrebný pre pravidelné úlohy, takže príslušný riadok môže byť vynechaný, inou možnosťou je vložiť beat vnútri pracovníka:

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

ale citovať celer dokumentácia:

Môžete tiež začať vkladať beat vnútri pracovníkatým, že umožníte pracovníkovi možnosť -B, je to výhodné, ak nikdy nespustíte viac než jeden pracovný uzol, ale nie je bežne používaný a z tohto dôvodu sa nedoporučuje na použitie v produkcii