저는 샐러리가 새롭습니다. 내 장고 프로젝트로 샐러리를 제대로 구성하려고합니다. 셀러리가 작동하는지 테스트하기 위해, 나는 2 초마다 "periodic_task"를 인쇄해야하는주기적인 작업을 만들었습니다. 불행히도 작동하지 않지만 오류는 발생하지 않습니다.셀러리의 간단한 주기적 작업이 작동하지 않지만 오류는 발생하지 않습니다.
1 설치된 rabbitmq
2Project/project/celery.py
from __future__ import absolute_import
import os
from celery import Celery
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project.settings')
from django.conf import settings # noqa
app = Celery('project')
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
@app.task(bind=True)
def myfunc():
print 'periodic_task'
@app.task(bind=True)
def debudeg_task(self):
print('Request: {0!r}'.format(self.request))
3Project/project/__init__.py
from __future__ import absolute_import
from .celery import app as celery_app
4
INSTALLED_APPS = [
'djcelery',
...]
...
...
CELERYBEAT_SCHEDULE = {
'schedule-name': {
'task': 'project.celery.myfunc', # We are going to create a email_sending_method later in this post.
'schedule': timedelta(seconds=2),
},
}
그리고 python manage.py
전에 Settings.py
, 나는 어떤 "periodic_task"2 초마다 ... 당신이 무엇을해야하는 지 알고 있나요 콘솔에 인쇄를 볼 수 없습니다 아직
celery -A project worker -l info
를 실행?
편집 셀러리 콘솔 :
이-------------- [email protected]_NB v3.1.23 (Cipater)
---- **** -----
--- * *** * -- Windows-8-6.2.9200
-- * - **** ---
- ** ---------- [config]
- ** ---------- .> app: dolava:0x33d1350
- ** ---------- .> transport: amqp://guest:**@localhost:5672//
- ** ---------- .> results: disabled://
- *** --- * --- .> concurrency: 4 (prefork)
-- ******* ----
--- ***** ----- [queues]
-------------- .> celery exchange=celery(direct) key=celery
[tasks]
. project.celery.debudeg_task
. project.celery.myfunc
편집이 :
이길 노동자를 변경 한 후, 그것을 작동하는 것 같다. 2 초마다 (5 초로 변경됨) 문제가 발생하지만 작업 결과를 볼 수 없습니다. (나는 CELERYBEAT_SCHEDULE으로도 잘못된 경로를 아무것도 넣을 수 있습니다 그리고 어떤 오류가 발생하지 않습니다 ..)
나는에 myfunc에 코드를 변경 :
@app.task(bind=True)
def myfunc():
# notifications.send_message_to_admin('sdaa','dsadasdsa')
with open('text.txt','a') as f:
f.write('sa')
하지만 난 아무 text.txt 볼 수 없습니다 .
> celery -A dolava beat -l info
celery beat v3.1.23 (Cipater) is starting.
__ - ... __ - _
Configuration ->
. broker -> amqp://guest:**@localhost:5672//
. loader -> celery.loaders.app.AppLoader
. scheduler -> djcelery.schedulers.DatabaseScheduler
. logfile -> [stderr]@%INFO
. maxinterval -> now (0s)
[2016-10-26 17:46:50,135: INFO/MainProcess] beat: Starting...
[2016-10-26 17:46:50,138: INFO/MainProcess] Writing entries...
[2016-10-26 17:46:51,433: INFO/MainProcess] DatabaseScheduler: Schedule changed.
[2016-10-26 17:46:51,433: INFO/MainProcess] Writing entries...
[2016-10-26 17:46:51,812: INFO/MainProcess] Scheduler: Sending due task schedule-name (dolava_app.tasks.myfunc)
[2016-10-26 17:46:51,864: INFO/MainProcess] Writing entries...
[2016-10-26 17:46:57,138: INFO/MainProcess] Scheduler: Sending due task schedule-name (dolava_app.tasks.myfunc)
[2016-10-26 17:47:02,230: INFO/MainProcess] Scheduler: Sending due task schedule-name (dolava_app.tasks.myfunc)
실행? –
@anonymous 예, RabbitMQ를 설치하기 전까지는 작동하지 않았습니다. 셀로리와 매우 혼란 스럽기 때문에 분명 할 수 있습니다. 나는 질문의 하단에 셀러리 콘솔의 일부를 추가했습니다. –
또한 셀러리 작업 내에서 코드를 업데이트 할 때주의하십시오. 변경 사항이 –