2016-11-02 6 views
0

사용자가 여러 개의 고유 한 블로그를 만들 수있는 단일 장고 응용 프로그램이 있습니다. 각 블로그는 모델 데이터 (예 : 방문수, 클릭 수 등)를 시간별/일별/주별 등으로 수집해야하며 데이터 수집 간격은 블로그간에 다를 수 있습니다. 또한, 어떤 시점에서, 사용자는 데이터 수집의 빈도를 변경하고자 할 수있다. 사용자 인터페이스에서 매주부터 매일로셀 비트가 일정하지 않은 간격으로 스케줄러로 사용됩니까?

공식 문서에서 Periodic Tasks을 보면, 설정 파일에 간격 값을 '하드 코드'해야하며 한 번만 예를 들어 간격을 지정할 수 있습니다.

from celery.schedules import crontab 

CELERYBEAT_SCHEDULE = { 
    # Executes every Monday morning at 7:30 A.M 
    'add-every-monday-morning': { 
     'task': 'tasks.add', 
     'schedule': crontab(hour=7, minute=30, day_of_week=1), 
     'args': (16, 16), 
    }, 
} 

어떻게이 가야합니까 또는 셀러리가 서로 다른 간격으로 같은 종류의 여러 작업을 예약 AND (AJAX를 통해) 사용자 인터페이스를 통해 값을 변경하는 것이 가능하다조차?

+2

와 비트 프로세스를 시작. [샐러리 오피스] (http://docs.celeryproject.org/ko/latest/userguide/periodic-tasks.html#using-custom-scheduler-classes) – devxplorer

+0

와우는 데이터 수집 빈도를 변경합니다. 이 기능을 https://github.com/rajasimon/beatserver에 작성합니다. –

+0

@devxplorer 나타나는 ''django-celery-beat' (https://pypi.python.org/pypi/django_celery_beat)를 시험 중입니다. 'django-celery'를 대체 할 것입니다. (그렇지 않은 경우 알려주십시오.) 지금 직면하고있는 문제는 새 PeriodicTasks를 추가 할 때 비트 프로세스 (셀러리 -A proj beat -l info -S django')를 다시 시작할 때까지 실행되지 않는다는 것입니다. – FatHippo

답변

0

@devxplorer에서 언급했듯이 django-celery는 데이터베이스 백엔드를 제공합니다. 장고 관리자를 통해 작업을 관리하거나 프로그래밍 방식으로 작업을 관리하거나 API를 통해 모델을 노출 할 수 있습니다.

from djcelery.models import PeriodicTask 

PeriodicTask(
    name="My First Task", 
    ... 
).create() 
all_tasks = PeriodicTask.objects.all() 
... 

그런 다음 당신은 당신이 장고 관리자에주기적인 작업을 관리 할 수있는`djcelery.schedulers.DatabaseScheduler`를 사용할 수`장고 - celery`와

$ celery -A proj beat -S djcelery.schedulers.DatabaseScheduler 
+0

비트 프로세스를 시작한 후 정기적 인 작업을 만들 때 비트 프로세스를 다시 시작할 때까지 새로운 작업이 실행되지 않는 것으로 나타났습니다. 새 주기적 작업이 생성되면 비트 프로세스를 자동으로 다시 시작하려면 어떻게해야합니까? – FatHippo

+0

@FatHippo 외부 파일 감시자를 추가 할 수 있습니다. 마지막으로'--autoreload' 플래그가 잘못되었다고 들었습니다. 나는 이것을 한 번 사용하려고 시도했는데 토끼 구멍에서 3 일 동안 끝났습니다. 정말 미묘한 방식으로 물건이 부러 졌기 때문입니다. 나는 그것이 최신 버전에서 제거되었다고 생각한다; http://docs.celeryproject.org/ko/latest/whatsnew-4.0.html#features-removed-for-lack-of-funding – pnovotnak