Django Heroku临时存储、Sendgrid和附件

Django Heroku临时存储、Sendgrid和附件,django,heroku,email-attachments,sendgrid,Django,Heroku,Email Attachments,Sendgrid,有时我需要向我网站的用户发送带有附件的电子邮件。我正在使用SendGrid和进行发送。电子邮件发送通过Redis排队 这里有一个问题——我应该把附件放在哪里,它当前是作为web过程的一部分生成的?我试着把它放在/tmp上,但没有用——大概是因为当web进程关闭时文件被删除了,而当工作进程经过时文件就不再可用了?我尝试了/app/media,但它也不起作用——我想是因为/app/media是只读的(尽管奇怪的是,我在尝试写入此目录时没有收到任何错误) 我认为答案可能是,我必须在发送电子邮件的同一过

有时我需要向我网站的用户发送带有附件的电子邮件。我正在使用SendGrid和进行发送。电子邮件发送通过Redis排队

这里有一个问题——我应该把附件放在哪里,它当前是作为web过程的一部分生成的?我试着把它放在/tmp上,但没有用——大概是因为当web进程关闭时文件被删除了,而当工作进程经过时文件就不再可用了?我尝试了/app/media,但它也不起作用——我想是因为/app/media是只读的(尽管奇怪的是,我在尝试写入此目录时没有收到任何错误)


我认为答案可能是,我必须在发送电子邮件的同一过程中重构代码以生成附件,但由于这是一个非常重要的重构,我想我应该先询问社区。谢谢

Heroku的
/tmp
目录是。因此,您的Web Dyno将一个文件保存在其
/tmp
目录中,然后您的工作人员在其
/tmp
目录中查找,却找不到它


最好的选择可能是重构您的代码(这样您就不会阻塞Web Dyno的资源创建文件并将文件写入磁盘)。但是,如果您真的想避免它,您可以将文件临时存储在S3[]或其他一些外部存储机制上。

Heroku的
/tmp
目录是。因此,您的Web Dyno将一个文件保存在其
/tmp
目录中,然后您的工作人员在其
/tmp
目录中查找,却找不到它


最好的选择可能是重构您的代码(这样您就不会阻塞Web Dyno的资源创建文件并将文件写入磁盘)。但是,如果您真的想避免这种情况,可以将文件临时存储在S3[]或其他一些外部存储机制上。

您始终需要使用外部存储,例如S3,来存储每个服务器实例/dyno都需要使用的文件。
有趣的是,如果你不想永远保存这些附件。您可以将生命周期事件附加到您的S3存储桶,如果文件早于x天,该事件将自动删除该文件。

您始终需要使用外部存储,例如S3,来存储需要对每个服务器实例/dyno可用的文件。
有趣的是,如果你不想永远保存这些附件。您可以将生命周期事件附加到S3存储桶中,如果文件比x天旧,该事件将自动删除该文件。

谢谢。是的,我用S3处理所有的静态资产。我只是希望避免这里的网络开销。。。更不用说重构了。但似乎无论如何都是必要的。唉。谢谢如果你真的关心网络开销,我鼓励你查看关于的文章。谢谢。是的,我用S3处理所有的静态资产。我只是希望避免这里的网络开销。。。更不用说重构了。但似乎无论如何都是必要的。唉。谢谢如果你真的关心网络开销,我建议你看看关于的文章。是的,这就是我处理S3资产和过期的旧版本JS/CSS文件的方式。本希望避免这里的网络开销,但我想这是不可避免的。谢谢你的建议。是的,我就是这样处理S3资产和过期的旧版本JS/CSS文件的。本希望避免这里的网络开销,但我想这是不可避免的。谢谢你的建议。