Celery 组成、任务投递与结果
Redis、缓存与异步任务#Python全栈#第十五阶段#Redis、缓存与异步任务#Celery 组成、任务投递与结果约 799 字 · 2 分钟阅读
追问显示点击任意追问卡片可收起 / 展开
Celery 的 Producer、Broker、Worker 与 Result Backend 各做什么?
追问 Web 接口投递任务到执行和查询结果经过哪些步骤?Broker 与结果后端为什么可以使用不同服务?
Celery 异步任务与 async 函数、线程及 FastAPI BackgroundTasks 有什么区别?
追问 执行位置、请求生命周期、进程恢复和队列管理怎样影响选择?Celery 是否自动保证所有业务结果可靠?
如何创建 Celery 应用并注册任务?
追问 应用配置、任务名称、模块发现与 Worker 启动怎样关联?任务导入失败为何可能导致“未注册任务”?
直接调用任务、delay 与 apply_async 有什么区别?
追问 在哪个进程执行,何时经过 Broker?倒计时、队列、过期和投递选项应怎样声明?
任务参数为什么通常使用标识和简单数据?
追问 数据库会话、Request、打开文件与 ORM 实例为何不宜直接传递?发送 ID 后 Worker 读取当前数据,怎样明确是否需要历史快照?
任务序列化应如何配置与限制?
追问 JSON 支持哪些结构,日期和 Decimal 怎样处理?不可信消息使用可执行反序列化格式可能有什么风险?
AsyncResult 能提供哪些结果信息?
追问 状态、结果、异常和结果过期怎样理解?PENDING 是否足以证明任务已经排队,未知 ID 为什么可能也显示该状态?
为什么通常不应在 Web 请求内立即等待任务 get 结果?
追问 阻塞接口会怎样抵消异步投递收益?202、业务任务记录与轮询接口如何替代,同一 Worker 任务内等待子任务又有什么死锁风险?
任务 ID 与业务操作 ID 有什么区别?
追问 重复投递、重试和重新执行如何关联?指定相同 task_id 是否就保证 Broker 和 Worker 自动去重?
怎样保存业务任务状态并保护查询结果?
追问 提交者、状态、进度、错误摘要与结果位置如何记录?知道任务 ID 是否就应允许读取或下载他人的结果?