셀레 리 4.1을 사용하고 있으며 crontab 작업에서 시간을 설정하는 경우를 제외하고 모든 주기적 작업이 올바르게 작동합니다. 나는 그것이 시간대 설정과 관련이 있다고 생각했지만 문제가있는 곳에서는 해결할 수없는 것 같습니다.샐러리가 시간을 설정할 때 crontab 작업을 보내지 않음
대시 보드/celery.py이 작동
from __future__ import absolute_import, unicode_literals
from celery import Celery
app = Celery('dashboard',
broker='redis://',
backend='redis://localhost',
include=['dashboard.tasks'])
app.conf.update(
result_expires=3600,
enable_utc = False,
timezone = 'America/New_York'
)
if __name__ == '__main__':
app.start()
는 :
@app.task
@periodic_task(run_every=(crontab()))
def shutdown_vms():
inst = C2CManage(['stop','kube'])
inst.run()
return
이 작동 :
@app.task
@periodic_task(run_every=(crontab(minute=30,hour='*')))
def shutdown_vms():
inst = C2CManage(['stop','kube'])
inst.run()
return
이 작동하지 않습니다
@app.task
@periodic_task(run_every=(crontab(minute=30,hour=6)))
def shutdown_vms():
inst = C2CManage(['stop','kube'])
inst.run()
return
비트가 잘 작업 집어 :
<ScheduleEntry: dashboard.tasks.shutdown_vms dashboard.tasks.shutdown_vms() <crontab: 30 6 * * * (m/h/d/dM/MY)>
을하지만 결코 그것을 보내지 않습니다. 프로세스가 주말에 실행되도록하고 작업을 제출하지 않습니다. 내가 뭘 잘못하고 있는지 모르겠다. timedelta 주기성에서 실행되는 다른 작업이 있으며 모두 완벽하게 작동합니다.
도움이 될 것입니다.
EDIT : 호스트는 America/New_York 시간대를 사용하도록 설정됩니다.
EDIT2 : 별도의 프로세스로 비트를 실행 :
celery -A dashboard worker -l info
celery -A dashboard beat -l debug
내가 주로 분리를 실행하거나 멀티 사용합니다.
너무 나를 위해 그것을 고정 사용 셀러리 ==하여이 문제를 해결 xyz 기능을 사용하고 이제 전체 설정 이름 지정 규칙을 '소문자'로 변경하여 마치 샐러리가 주 목적으로 안정적으로 유지되지 않을 때 누군가를 돕는 것처럼 - 시간에 맞춰 작업을 실행합니다. –
나를 위해 셀레 리 4.1에서 시작하여 UTC를 사용하는 것이 좋은 해결책이었습니다. 당신이 일하는 데 도움이되는 것은 무엇이든간에가는 길입니다. 나는 일의 "우선 순위"에 대해 동의하지만, 사람들이 여가 시간에 물건을 지원할 때 불평하기는 어렵다 ... – Drew
셀레 리 4.1을 사용하고 UTC 시간대를 설정하면 시간이 올바르지 않다. UTC 시간 – guangyao