我是Python和Celery-Redis的新手,所以如果我的理解不正确,请纠正我。
我在调试一个代码库它的结构像-TaskClass
-〉celery 任务HandlerClass1, HandlerClass2
-〉这些是扩展Object类的python类
应用程序创建TaskClass
,比如dumyTask
示例,dumyTask
创建celery 子任务(我相信这些子任务是唯一的),比如dumySubTask1, dumySubTask2
,方法是获取处理程序的签名。
我不明白什么?
1)Celery是如何管理dumySubTask1, dumySubTask2
和dumyTask
的结果的?我的意思是dumySubTask1
和dumySubTask2
的结果应该被聚合并作为dumyTask
的结果给出。
2)任务执行后,Celery如何在后端存储任务结果?我的意思是dumySubTask1
和dumySubTask2
的结果是否会存储在后端,然后返回到dumyTask
,然后dumyTask
将结果返回到QUEUE(如果我说错了,请更正)?
3)Celery是否以堆栈的方式维护任务和子任务?请参见快照。Task-SubTask Tree
任何指导都是非常感谢的。谢谢。
2条答案
按热度按时间ruarlubt1#
celery 工作者可以调用“任务”。2这个“任务”可以有“子任务”,它们可以“链接”在一起,即顺序调用。3“链接”是celery 画布指南中专门使用的术语。4然后将结果返回到redis中的队列。
celery 工人用于调用“独立任务”,主要用于“网络用例”,即“发送电子邮件”、“点击URL”
2q5ifsrm2#
你需要从celery 示例中得到它
task = app_celery.AsyncResult(task_id)
完整示例-如下
我的
celery_worker.py
文件是:我正在使用FastAPI,我的端点是:
我的
.env
文件具有: