중개인에게 보낸 후 일부 작업이 중단되는 이상한 문제가 있습니다. 이 작업은 약 10 개의 작업 중 하나에 대해 발생합니다. 작업을하는 오래된 샐러리 작업자가 없다는 것을 확인했습니다.rabbitmq broker로 보낸 셀러리 작업이 손실되었습니다.
필자는 누락 된 작업을 모니터링하기 위해 데이터베이스 백엔드 및 꽃을 사용했지만 apply_async 이후에 반환 된 task_id는 데이터베이스 또는 꽃에 없습니다. 상태는 항상 보류 중으로 나타납니다.
그런 다음 셀러리 신호를 사용하여 무슨 일이 일어나는지 확인합니다. 필자는 누락 된 작업에 대해서만 before_task_publish 및 after_task_publish 신호가 실행됨을 확인했습니다. 이 작업에 대한 흔적이 없다고 게시하십시오.
이
이 내가 로그$ cat gunicorn-access.log | grep -i 103de274-00dc-4765-844f-d319e9e199c2
BEFORE TASK SENT id: '103de274-00dc-4765-844f-d319e9e199c2'
AFTER TASK SENT id: '103de274-00dc-4765-844f-d319e9e199c2'
내가 작업이 rabbitmq 무시하거나 조용히 어떤 이유로 떨어 있는지 모르겠습니다에서 찾을 것입니다 내 신호
@before_task_publish.connect
def before_task_publish_handler(sender=None, headers=None, body=None, **kwargs):
# information about task are located in headers for task messages
# using the task protocol version 2.
logger.info("BEFORE TASK SENT id:"+body['id'])
@after_task_publish.connect
def after_task_publish_handler(sender=None, headers=None, body=None, exchange=None, routing_key=None, **kwargs):
# information about task are located in headers for task messages
# using the task protocol version 2.
logger.info("AFTER TASK SENT id:"+body['id'])
@task_prerun.connect
def task_prerun_handler(sender=None, task_id=None, task=None, **kwargs):
logger.info("TASK PRERUN with TASK_ID:"+str(task_id))
있습니다.
이유를 찾았습니까? 내 문제를 해결하지 못하는 – melih