You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Celery AsyncResult如何确定要查询的Broker和Backend?

问题解答

你的疑惑核心在于Celery的默认App机制,下面直接给你拆解原因:

  • 隐式绑定已初始化的App实例
    当你在脚本里初始化Celery App(比如app = Celery(..., broker='redis://...', backend='redis://...'))时,Celery会自动把这个实例设为当前进程的默认App。之后创建AsyncResult(task_id)时,它会自动复用这个默认App的所有配置(包括Broker和Backend信息),所以不需要手动传入这些参数。

  • 可以通过测试验证这个逻辑
    你可以新开一个完全独立的脚本,不导入或初始化你的Celery App,直接尝试创建AsyncResult(task_id),这时肯定会报错——因为找不到默认App的配置,无法连接Broker/Backend去查询任务状态。

  • 多App场景下的显式指定
    如果你的项目里有多个Celery App实例,或者需要在没有默认App的环境中查询,也可以手动给AsyncResult指定App:

    from celery.result import AsyncResult
    from your_app_module import celery_app  # 导入你配置好的Celery App
    
    task_result = AsyncResult("你的task_id", app=celery_app)
    

内容的提问来源于stack exchange,提问作者Della

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 02:09:57