【问题标题】:What is the best way to get URl of generated file within Celery task在 Celery 任务中获取生成文件的 URl 的最佳方法是什么
【发布时间】:2026-02-20 16:45:01
【问题描述】:

我的任务是异步导出数据库中的几个大表,因为现在记录量太大,需要太多时间。所以我已经成功地将导出的代码移到了 Celery 任务中。它将文件导出并保存在服务器上的文件夹中。但是我无法从任务中获取整个文件名,我可以将其传递给其余代码,因此在完成导出过程后下载它,因为 Celery 任务唯一可以返回的只是执行结果的状态任务(完成或尚未完成或失败)。我正在使用 Django/Python + Celery + Redis。感谢您的任何建议,它已经与我接壤好几天了。

【问题讨论】:

  • 可以添加celery app的初始化吗?
  • 您是否尝试使用AsyncResultreturn path_to_file # in celery task
  • 感谢您为我指明了正确的方向。最终,我尝试了 celery.result 中的 ResultBase,它为我完成了这项工作。对我来说问题显然是任务返回的第一件事是它的 id,然后第二个已经是我需要的参数。

标签: python django celery celery-task


【解决方案1】:

在帮助 Danila 发表评论后,我尝试了 celery.result 库,我之前对此一无所知(令人惊讶的是,我之前也没有发现任何提及它的内容)。在从 celery.result 导入 ResultBase 后,它捕获了来自任务的传入结果,我终于能够获得我生成的文件的 URL,因此我得到了我需要的东西。谢谢

【讨论】:

    最近更新 更多