2017-02-14 12 views
2

그래서 예약 된 작업을 수행하는 방법을 알아 내려고 노력해 왔습니다. 셀러리를 발견하고 간단한 예약 작업을 할 수있었습니다. 이 작업을 수행하려면 명령 줄을 열고 celery -A proj beat을 실행해야합니다. 이것은 개발 환경에서 잘 작동하지만 문제가 될 생산에 넣을 때 유용합니다.장고 - 샐러리가 생산 중입니까?

그래서 어떻게 커넬을 사용하지 않고 셀러리를 사용할 수 있습니까? 프로덕션 서버가 온라인 상태 일 때 스케줄러가 어떻게 작동하는지 어떻게 확인할 수 있습니까? Celery가이 작업을 수행 할 수 있습니까? 아니면 다른 방법을 사용해야합니까?

+0

프로덕션 환경에서 어떤 문제가 발생할 것으로 예상됩니까? –

+0

서버를 통해서도 내 컴퓨터를 가지고 있지 않으면 셀러리를 실행할 수 없다는 것은 다른 컴퓨터에 있다는 것입니다. – user2361174

+3

언제나 그것을 daemonize 할 수 있습니다. 이것을 확인하십시오, http://docs.celeryproject.org/ko/latest/userguide/daemonizing.html –

답변

2

우리는 생산 환경에서 Heroku를 사용합니다. AWS로 전환하는 중입니다. 두 환경 모두에서 셀러리는 잘 어울립니다.

프로덕션 환경이 어떤 모양인지 이해하는 것이 도움이됩니다. Django를 사용함에 따라 웹 사이트를 제공하고 있음을 암시하는 것처럼 컴퓨터를 끄는 것에 대해 걱정할 이유가 약간 있습니다. 랩톱에서 웹 사이트를 제공하고 있습니까?

어쨌든 클라우드 플랫폼에서 프로덕션 서버를 실행한다고 가정하면 Django를 실행하는 데 필요한 명령 줄과 Celery의 명령 줄을 보내면됩니다 (앞에서 언급했듯이). 문제).

구성면에서 '예약 된'작업이 있다고 말하면 config.py 파일에 비트 일정을 설정했음을 의미합니다. 당신의 tasks.py에서 다음

from celery.schedules import crontab 

beat_schedule = { 
    'task1': { 
     'task': 'tasks.task_one', 
     'schedule': 3600 
    }, 
    'task2': { 
     'task': 'tibController.tasks.update_old_retail', 
     'schedule': crontab(hour=12, minute=0, day_of_week='mon-fri' 
    } 
} 

그냥 그냥 이렇게 설정 파일을 호출 :

하지 않으면,이 같은 (당신이 셀러리 작업 정의를 유지하는 모듈이라고 tasks.py이 가정을 찾아야한다
from celery import Celery 
import config 

app = Celery('tasks') 
app.config_from_object(config) 

당신은 docs에서의 crontab에 대한 자세한 내용을 찾을 수 있습니다 또한 간단한 셀러리 예를 들어이 repo을 체크 아웃 할 수 요약

:..

  1. 로드 당신의 셀러리 응용 프로그램
  2. 에 설정 파일이 당신의 코드를 실행하는 클라우드 플랫폼을 얻을 때 실행되는 작업을 식별하는 설정 파일을 만듭니다. 이미 도움이

희망을 확인했다 똑같이

  • 실행 셀러리.

  • +0

    기본적으로 이것을 설정하면 터미널에서'셀러리 -A proj beat'를 입력하지 않아도됩니까? – Bijoy

    +0

    예, Celery가 시작할 수 있도록 beat 명령을 실행하고 싶습니다. 셀러리를 시작하는 방법은 다음과 같습니다.'셀러리 -A task_module.tasks 작업자 --loglevel = info -beat'. –