我的应用中有一个工作进程每小时运行一个脚本。此脚本将数据写入Web应用程序用于更新其内容的文件系统。我注意到虽然工作人员成功运行了该过程,但数据仍未更新。这完全与heroku的文件系统是只读的事实有关吗?如果是这样,我如何编写此文件而无需进入数据库?
答案 0 :(得分:5)
假设您的Web和工作进程在procfile中的不同行中实例化,它们运行在单独的Heroku dynos上,每个都有自己的文件系统。
因此,您的Web进程无权访问您的工作进程的文件系统,反之亦然。
此外,即使你在同一个dyno上运行这两个进程(这是可能的,但不推荐),你仍然无法使用本地dyno文件系统可靠地将信息从一个进程传输到另一个进程,因为Heroku dynos可以和将recycle在没有事先警告的情况下至少每24小时发出一次警告,当他们这样做时,您在回收之前写入本地文件系统的任何文件都会消失。
结论:你不应该也不能使用本地Heroku文件系统来做你想做的事情。相反,您需要使用某种有状态的支持服务(例如,例如Heroku Redis)。