【问题标题】:How to host, write to, and push a text file to a git repo如何托管、写入和推送文本文件到 git repo
【发布时间】:2020-11-02 10:51:46
【问题描述】:

我有一个非常具体的问题,我完全没有经验,希望得到一些指导。

我在我的网站上托管了一个简单的 HTML/JS 表单,该表单要求输入电话号码,并在提交时向我使用 Google App Engine 托管的 Python 应用程序发出请求,该应用程序随后运行 API将文本发送到该号码。

到目前为止,效果很好。但是我希望能够将该数字存储到一个简单的文本文件中,并将其推送到我的 git 存储库,因为我有一个 Heroku 应用程序,它监听每次推送以重新部署应用程序并运行计划任务以发送常规文本向该现已更新列表中的每个号码发送消息。

我遇到的问题是弄清楚这个数字文本文件的托管位置以及如何写入它,然后使用 gitpython 之类的库进行推送。

这一切都可以在本地运行,但当应用程序由 Google App Engine/Heroku 构建和部署时就不行了。

【问题讨论】:

  • 如果您需要帮助,您应该说明在 Google App Engine+Heroku 上运行时遇到的问题。也就是说,将用户数据存储在 git repo 中听起来是个坏主意。您应该使用 Google App Engine 或 Heroku 的持久存储选项。
  • 谢谢@nog642!我不知道他们的持久存储选项。我会查一下。
  • Heroku 至少没有持久存储选项。

标签: python google-app-engine heroku git-remote gitpython


【解决方案1】:

但我希望能够将该数字存储到一个简单的文本文件中,并将其推送到我的 git 存储库,因为我有一个 Heroku 应用程序,它会监听每次推送以重新部署应用程序并运行计划任务以发送出去定期向该现已更新列表中的每个号码发送短信。

我确定这不是您想听到的,但是在文本文件中硬编码数据并在每次数据更改时重新部署您的应用程序没有多大意义。数据和代码是根本不同的东西。更改数据永远不需要重新部署应用程序。

另外,不清楚在哪里您正在编写该文件,但如果它在您的 Heroku 服务器上,您将会遇到其他问题。它的文件系统是both ephemeral and dyno-local,例如因此,如果您尝试通过heroku run bash 查看保存的文件,您将看不到它(在one-off dyno 上运行,而不是在运行的网络测功机上),并且由于automatic dyno restarts,它将在24 小时内丢失。

将数据保存在适当的客户端-服务器数据库而不是文本文件中可以解决这两个问题。

(我不熟悉 Google App Engine,但它可能有类似的限制。即使没有,这仍然是一个更好的架构。)

【讨论】:

  • 谢谢,克里斯!了解临时/动态本地文件系统绝对是有见地的。我很怀疑,因为我的代码可以在本地工作,但不能在 Web 上运行,因此最好能得到一个明确的答案。那么,您对在线托管此类文件有何建议?我想到了 Django,但不确定这对于像文本文件这样简单的东西是否太过分了。
  • 你不需要 Django,只需要一个数据库。 Heroku has a PostgreSQL service 的免费套餐应该比您需要的更多,或者选择 another data persistence addon。或者,如果您真的想继续使用文件,请将其存储在 Amazon S3 或 Azure Blob Storage 之类的东西上。
  • 谢谢!我尝试了 PostgreSQL Heroku 附加组件,除了连接到数据库的简短问题外,它工作得很好。耶!
猜你喜欢
  • 1970-01-01
  • 2013-06-04
  • 1970-01-01
  • 1970-01-01
  • 2015-06-25
  • 1970-01-01
  • 2013-03-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多