无法将文件保存在 'tmp' 文件夹中
Cannot save file in 'tmp' folder
这是我第一次使用 Heroku,它是临时文件系统。我有一个 python 脚本需要一个临时文件夹来写入一些文件,而脚本 运行s.
我首先做了什么:按照以下逻辑在我的 heroku 根文件夹中创建一个 'tmp' 文件夹:
mkdir tmp
touch tmp/.keep
git add tmp/.keep
git commit -m "Add tmp directory to app repository."
我还创建了一个简单的 python 脚本来将数据帧存储到文本文件中:
import pandas as pd
df = pd.DataFrame( {'Name': {0: 'John', 1: 'Luc', 2: 'Steph'}, 'Gender': {0: 'Male', 1: 'Male', 2: 'Female'}, 'Age': {0: 55, 1: 47, 2: 20}} )
df.to_csv('tmp/df.txt')
在 Heroku CLI 中,我 运行 该脚本具有:
heroku run python createfile.py
脚本有 运行 后,我使用 bash:
进入 'tmp' 文件夹
heroku run bash
cd tmp
ls
但是文件夹是空的,而我希望 df.txt 在那里。
我缺少任何步骤吗?或者我需要一个付费的 Heroku 帐户才能写入 tmp 文件夹吗?我必须先 chmod 这个文件夹吗?
edit: 我又做了一些测试,似乎文件被正确写入了 tmp 文件夹。只是在使用'heroku run bash'命令时无法看到/被删除。
Heroku 的行为不像虚拟服务器。按照设计,dynos 是一次性的。
每次您使用 heroku run
时,您访问的 one-off dyno 会在命令结束后立即被丢弃(或者您在 bash
等交互的情况下注销)。您是 运行 您的 createfile.py
脚本和 bash
在不共享文件系统的两个完全不相关的实例中。
我不清楚你想要达到什么目的,但一般来说,你可以在单个进程的内存中短期保留临时“工作”的东西。任何你希望坚持超出该范围的东西都必须保存在你的 dyno 之外,例如在客户端-服务器数据库(如 PostgreSQL)或对象存储(如 Azure Blob Storage)中。
请注意,此模型是经过深思熟虑的架构决策,它会影响 Heroku dynos 的所有层级。升级到付费计划不会有任何改变。
这是我第一次使用 Heroku,它是临时文件系统。我有一个 python 脚本需要一个临时文件夹来写入一些文件,而脚本 运行s.
我首先做了什么:按照以下逻辑在我的 heroku 根文件夹中创建一个 'tmp' 文件夹:
mkdir tmp
touch tmp/.keep
git add tmp/.keep
git commit -m "Add tmp directory to app repository."
我还创建了一个简单的 python 脚本来将数据帧存储到文本文件中:
import pandas as pd
df = pd.DataFrame( {'Name': {0: 'John', 1: 'Luc', 2: 'Steph'}, 'Gender': {0: 'Male', 1: 'Male', 2: 'Female'}, 'Age': {0: 55, 1: 47, 2: 20}} )
df.to_csv('tmp/df.txt')
在 Heroku CLI 中,我 运行 该脚本具有:
heroku run python createfile.py
脚本有 运行 后,我使用 bash:
进入 'tmp' 文件夹heroku run bash
cd tmp
ls
但是文件夹是空的,而我希望 df.txt 在那里。 我缺少任何步骤吗?或者我需要一个付费的 Heroku 帐户才能写入 tmp 文件夹吗?我必须先 chmod 这个文件夹吗?
edit: 我又做了一些测试,似乎文件被正确写入了 tmp 文件夹。只是在使用'heroku run bash'命令时无法看到/被删除。
Heroku 的行为不像虚拟服务器。按照设计,dynos 是一次性的。
每次您使用 heroku run
时,您访问的 one-off dyno 会在命令结束后立即被丢弃(或者您在 bash
等交互的情况下注销)。您是 运行 您的 createfile.py
脚本和 bash
在不共享文件系统的两个完全不相关的实例中。
我不清楚你想要达到什么目的,但一般来说,你可以在单个进程的内存中短期保留临时“工作”的东西。任何你希望坚持超出该范围的东西都必须保存在你的 dyno 之外,例如在客户端-服务器数据库(如 PostgreSQL)或对象存储(如 Azure Blob Storage)中。
请注意,此模型是经过深思熟虑的架构决策,它会影响 Heroku dynos 的所有层级。升级到付费计划不会有任何改变。