首页 > 解决方案 > 将文件从芹菜任务发送到烧瓶路线

问题描述

我有一个烧瓶应用程序,我在 Celery 任务中从 S3 查询和过滤大型数据集。我想将过滤后的数据作为 CSV 提供给用户。CSV 的大小最大为 100mb。我最初的想法是让 Celery 将数据集作为 CSV 保存到磁盘,然后在烧瓶路由中使用 send_file 但我使用 Heroku 进行部署,它有一个临时文件系统。因此,如果我将文件保存在 Celery 工作者中,它不会共享给网络工作者。我还直接在烧瓶路由中使用 S3 查询,然后在不保存到服务器的情况下发送文件,但是文件查询需要时间,最多 30 秒,所以我想将其作为 Celery 中的后台作业。

另一个想法是将过滤后的数据上传到 S3 并在下载后删除。然而,这似乎效率低下,因为它意味着下载、过滤和重新上传。

有什么方法可以有效地做到这一点,或者我应该把 Heroku 移到有 SSD 空间的地方。谢谢!

标签: pythonflaskamazon-s3celery

解决方案


推荐阅读