2016-08-22 1 views
0

나는 Heroku와 함께 배포 한 Django 응용 프로그램을 가지고 있습니다. 매분마다 정기적 인 작업을 작성하기 위해 셀러리를 사용하려고합니다. 그러나 다음 명령을 사용하여 작업자 로그를 관찰 할 때 :Django Celery Periodic Task가 실행되지 않습니다 (Heroku)?

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) 

한 가지 추가 할 아래에있는 내 구성 ...

Procfile입니다. 파이썬 셸과 "delay()"명령을 사용하여 작업을 실행하면 작업이 실제로 실행됩니다 (로그에 표시됨). 그러나 실행될 때만 한 번만 실행됩니다. 해당 줄을 생략 할 수 있도록

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

근무주기적인 작업에 필요하지 않습니다 :

답변

-1

당신은 (주기적인 작업 실행을 담당) 비트 프로세스에 대한 별도의 작업자가 필요합니다. celery documentation 인용을 제외한

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

: 다른 가능성은 노동자 내부 이길 포함하는 것입니다 또한 근로자 수 있도록함으로써 작업자의 내부에 삽입 박동을 시작할 수 있습니다

가 -B 옵션을,이 경우에 편리합니다 하나 이상의 작업자 노드를 실행하지는 않지만 일반적으로 사용되지는 않으므로 프로덕션 용도로 권장되지 않습니다.

관련 문제