在heroku文件系统中写入文件并通过Web应用程序读取

jgo*_*zal 4 heroku

我的应用程序中有一个工作进程,每小时运行一个脚本。该脚本将数据写入Web应用程序用来更新其内容的文件系统。我注意到,尽管工作进程成功运行了该进程,但数据并未更新。这完全与heroku的文件系统是只读的事实有关吗?如果是这样,我如何在不必进入数据库的情况下写入此文件?

Yon*_*tch 7

假设您的Web和辅助进程在procfile中的不同行中实例化,则它们在单独的Heroku dynos上运行,每个dynos都有自己的文件系统。

因此,您的Web进程无法访问工作进程的文件系统,反之亦然。

此外,即使您在同一个dyno上运行了两个进程(这是可能的,但不建议这样做),您仍然无法使用本地dyno文件系统将信息从一个进程可靠地传输到另一个进程,因为Heroku dynos可以并且将在不进行回收的情况下进行回收。至少每24小时左右发出一次警告,并且这样做之前,您在回收之前写入本地文件系统的所有文件都会消失。

底线:您不应也不能将本地Heroku文件系统用于您要尝试的操作。相反,您需要使用某种有状态的支持服务(例如Heroku Redis)。