【发布时间】:2023-04-10 08:42:01
【问题描述】:
我在 Heroku (Cedar Stack) 上使用 Python/Django,我有一个需要编写的管理命令,它将从 S3 存储桶中拉出一个文件并进行处理。我不确定我是否了解如何使用临时文件系统。是否只有某些可写的目录?我发现另一篇文章暗示只有某些文件夹是可写的(但是,它似乎不适用于 Cedar 堆栈)。我找到了这个开发人员article,但没有详细说明(注意:我知道这只是暂时的。我只需要解压缩文件并处理文件)。我可以在应用程序根目录下的任何位置创建一个文件夹吗?我怎么会得到它?看来我可能只使用 $HOME。我通过连接到 via 做了一些测试
$ heroku run bash
并运行:
$ echo #HOME
返回:
/应用程序
并运行:
$ mkdir $HOME/tmp
在应用程序的根目录中创建一个文件夹,并提供与其他文件和文件夹相同的用户和组。
所以...我在这里遗漏了什么?有更好的方法吗?是否有为此的操作系统环境变量?我已经运行了“env”,但没有看到更好的。
【问题讨论】:
-
请注意,每当您执行
heroku run时,都会在Heroku 上启动一个新的one-off dyno,将收取费用。之后您可以通过heroku ps检查您的测功机的状态,看看它们是否仍在运行。使用heroku run bash时,测功机与您的终端绑定,即当您关闭终端会话时(例如使用 Ctrl+C)它应该停止。此外,一次性测功机无法访问您在运行时编写的其他测功机的文件,因此ls等将无法查看您的其他测功机上的内容(您的应用程序文件除外)。 -
@MarcoW。我想强调您评论的重要性!这太不明显了,以至于
heroku run旋转了一个新的测功机。我花了一段时间才明白为什么我无法通过 HTTP 访问通过heroku run "echo test > /app/web/test.html"创建的文件...事实证明它们是在一次性 dyno 上创建的并且从未面向网络...
标签: heroku filesystems