芹菜記錄器有問題。我有一個渲染幀的函數。我記錄了我產生的子進程的輸出,但似乎只有每個工人從隊列中選出的第一個作業被寫入。隊列中的所有後續任務都不會生成日誌文件。我已經嘗試使用python自己的日誌記錄以及相同的問題發生。有沒有可能丟失的配置?芹菜任務記錄器不寫
@task(queue='rndr')
def rndr(params):
path = get_logger_path(params)
logger = rndr.get_logger(logfile=path)
return render(params, logger)
我定義,因爲我重試記錄將被不同的定義,即rndr_retry.get_logger ...
我celeryconfig看起來像下面我的任務是這樣的:
BROKER_HOST = "xxx.xxx.xxx.xxx"
BROKER_PORT = 5672
BROKER_USER = "xxxx"
BROKER_PASSWORD = "xxxx"
CELERY_RESULT_BACKEND = 'amqp'
CELERY_DISABLE_RATE_LIMITS = True
CELERY_ACKS_LATE = True
CELERY_IMPORTS = ['lib.tasks.concatenate', 'lib.tasks.encode', 'lib.tasks.render', 'lib.tasks.still_image', 'lib.tasks.retry']
CELERY_ROUTES = {'lib.tasks.encode':{'queue': 'encode'},
'lib.tasks.concatenate':{'queue': 'encode'},
'lib.tasks.still_image':{'queue': 'encode'},
'lib.tasks.render':{'queue':'rndr'},
'lib.tasks.retry':{'queue': 'retry'}
}
希望有人能關於爲什麼只有第一個任務關閉隊列寫入...
謝謝你提前。
更新:這裏要求的渲染方法的部分版本沒有所有的細節問題細節...
def render(params, logger):
#load params to local values
try:
#create subprocess
output = child_proc.communicate()[0]
logger.info('output')
logger.info(output)
ret = child_proc.wait()
if ret not in [0,1]:
raise Exception('subprocess failed')
except Exception, exc:
logger.info(' '.join(str(x) for x in exc.args))
#mark as failed...
return
return
我要補充一點,不僅在文件沒有得到在後續任務編寫的,它不甚至不會創建日誌文件....
請注意,芹菜記錄器是一樣的事情,蟒蛇記錄器;芹菜使用引擎蓋下的'logging'模塊。 –
啊,是的,我也讀過。我不確定它爲什麼會在第一個隊列中工作,然後停下來...... – deecodameeko
您可能需要共享'render'的代碼,或者至少是該方法的一個很好的近似值;這裏說什麼都太少了。 –