【发布时间】:2022-06-12 23:47:43
【问题描述】:
我将celery 与fastapi 结合使用,结果通过命令记录在一个名为celery.log 的文件中
celery worker --app=app.celery_worker.celery --loglevel=info --logfile=app/logs/celery.log
代码触发时,日志写入celery.log文件如下:
[2022-05-20 11:38:35,148: INFO/MainProcess] Received task: kwept_calculation[bd80737a-92cd-4fea-8a68-c010d5ab3ed3]
[2022-05-20 11:38:46,249: WARNING/ForkPoolWorker-7] System mit Neuinstallation(en) nicht betreibbar (z.B. wegen nicht deckbarer Wärmenachfrage)
[2022-05-20 11:38:53,401: WARNING/ForkPoolWorker-7] System ohne Neuinstallation(en) nicht betreibbar (z.B. wegen nicht deckbarer Wärmenachfrage)
[2022-05-20 11:38:53,402: ERROR/ForkPoolWorker-7] Task kwept_calculation[bd80737a-92cd-4fea-8a68-c010d5ab3ed3] raised unexpected: UnboundLocalError("local variable 'kpis_df' referenced before assignment")
Traceback (most recent call last):
File "/usr/local/lib/python3.7/site-packages/celery/app/trace.py", line 412, in trace_task
R = retval = fun(*args, **kwargs)
File "/usr/local/lib/python3.7/site-packages/celery/app/trace.py", line 704, in __protected_call__
return self.run(*args, **kwargs)
File "/kwept/app/celery_worker.py", line 77, in calculation
created_at_ts
File "/kwept/app/services/planning_calc.py", line 571, in plan_calc
kpis_df.reset_index(drop=False, inplace=True)
UnboundLocalError: local variable 'kpis_df' referenced before assignment
要获取有关任务的信息,我会这样做
from celery.result import AsyncResult
task_result = AsyncResult(task_id) # in the above case bd80737a-92cd-4fea-8a68-c010d5ab3ed3
task_info = task_result.info
当我这样做时,会捕获来自上述task_info 的错误
赋值前引用的局部变量“kpis_df”
有没有办法捕获警告消息?在上面的例子中,警告是:
System mit Neuinstallation(en) nicht betreibbar (z.B. wegen nicht Deckbarer Wärmenachfrage)
和
System ohne Neuinstallation(en) nicht betreibbar (z.B. wegen nicht Deckbarer Wärmenachfrage)
【问题讨论】:
-
警告正在写入日志文件,您还想如何捕获它们?
标签: python redis celery celery-task