有时我需要向我网站的用户发送带有附件的电子邮件。我正在使用 SendGrid 和 python-sendgrid 0.1.4进行发送。电子邮件发送通过 Redis 排队。
问题是——当前作为网络进程的一部分生成的附件应该放在哪里?我尝试将其放在/tmp 中,但这不起作用——大概是因为该文件在 Web 进程关闭时被删除,并且在工作进程到来时不再可用?我尝试了/app/media,它也不起作用 - 我想是因为/app/media 是只读的(尽管奇怪的是,我在尝试写入此目录时没有收到任何错误)?
我认为答案可能是我必须重构我的代码以在发送电子邮件的同一过程中生成附件,但由于这是一个非常重要的重构,我想我应该首先询问社区。谢谢!
最佳答案
Heroku 的 /tmp
目录是 unique to each dyno 。因此,您的 Web Dyno 将文件保存在其 /tmp
目录中,然后您的工作人员在其 /tmp
目录中查找,但找不到它。
最好的选择可能是重构您的代码(这样您就不会阻塞 Web Dyno 的创建文件和将文件写入磁盘的资源)。但是,如果您确实想避免这种情况,您可以将文件临时存储在 S3 上 [ tutorial ] 或其他一些外部存储机制。
关于django - Heroku 临时存储、Sendgrid 和附件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18391207/