在 Django Celery 结果中使用临时文件

Posted

技术标签:

【中文标题】在 Django Celery 结果中使用临时文件【英文标题】:Using Temporary files in Django Celery Results 【发布时间】:2013-06-10 05:46:05 【问题描述】:

我正在使用 celery 任务为用户数据生成 PDF 和 Excel 导出。这些任务构建临时文件。这就是问题所在。我正在使用NamedTemporaryFile 对象,它会在文件关闭时自动删除。由于它们在任务结束时关闭,因此它们会立即消失。

如果我将 delete 属性设置为 false,我可以让它工作:

NamedTemporaryFile(delete=False)

但这有在系统上留下一堆临时文件的问题,这是我不想要的。

我总是可以创建一个清理任务,但我希望那里可能有更好的模式......

谢谢!

【问题讨论】:

您希望何时删除这些文件? 生成文件后如何处理? 【参考方案1】:

您可以使用 StringIO/CStringIO 类而不是 NamedTemporaryFile 从 Excel/PDF 文件中捕获数据并返回其值。 StringIO 类的行为方式与普通文件相同。

【讨论】:

以上是关于在 Django Celery 结果中使用临时文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Django 视图中使用 celery 存储延迟调用的结果?

在 Django 中使用 Celery 设置结果后端(rpc)

使 Django 测试用例数据库对 Celery 可见

Celery结合Django使用

Django中使用Celery,定制应用程序中定义的shared_task未在定期任务管理页面的注册任务中显示

Celery 在远程任务上使用 Django Result Backend