【问题标题】:How do I run Python scripts automatically, while my Flask website is running on a VPS?当我的 Flask 网站在 VPS 上运行时,如何自动运行 Python 脚本?
【发布时间】:2020-08-07 23:48:06
【问题描述】:

好的,所以基本上我正在创建一个网站。我需要在这个网站上显示的数据每天交付两次,我需要从文件中读取交付的数据并将这些新数据存储在数据库中(而不是旧数据)。

我已经创建了 python 函数来执行此操作。但是,我想知道,在我的烧瓶应用程序运行时运行此脚本的最佳方式是什么?这可能是一个非常简单的答案,但我看到一些答案说要将脚本合并到网站设计中(但是这些答案没有解释如何),还有一些人说要单独运行它。该脚本需要全天自动运行,无需我进行监控或输入。

TIA

【问题讨论】:

  • 我将 pythonanywhere.com 用于我的烧瓶网站。它还托管我的 MySQL 数据库。我没有遇到任何问题,后端 python 的东西很简单。而不是“运行烧瓶应用程序”python 总是在任何地方运行。如果对 py 脚本进行了任何更改,则该站点需要“重新加载”(但对于 html 和 css 等静态文件更改不需要重新加载)。我不是这个领域的专家,但我可以证明任何地方的 python 都适合我。

标签: python mysql flask server web-hosting


【解决方案1】:

通常,放置一个网络服务器来处理这些任务是一个非常糟糕的主意,在你的情况下就是烧瓶应用程序。原因有很多,仅举几例:

  • Python 的致命弱点 - GIL。
  • 在用户和其他操作之间共享应用程序的系统资源。
  • 崩溃 - 它发生了,它可能不太可能,但它确实发生了。如果您不小心,Web 应用程序也会随之崩溃。

因此,考虑到这一点,我建议您放弃这个想法并使用crontabs。基本上编写一个脚本来执行它需要执行的任何转换或操作,并在所需的时间创建一个 cron 作业。

【讨论】:

  • 我对 crontabs 不熟悉,但我会研究它。使用这些,我是否可以每天定期可靠地运行脚本,而无需手动与之交互?
  • @LiamWebb 近 50 年来,这一直是执行此类事情的事实上的标准方式,所以是的。如果您的脚本有效,它将有效。如果脚本崩溃,它将在下次需要时再次运行。还有数千种方法来监控它们,所以是的,这就是要走的路。
  • 好的,谢谢。是否有任何特殊的方式需要组织 python 脚本,或者我可以像普通的 python 文件一样设置它吗? (抱歉,这将是我真正完成并使用 VPS 的第一个网站,所以我以前没有使用过很多这些概念)
  • 这个想法是 cronjob 代表您设置它的任何用户运行。要求是: 1. 脚本必须是可执行的(google chmod)。 2. 在所有情况下,脚本都必须包括它是什么类型以及它应该使用哪个解释器。因此,对于 python,它应该以 #!/usr/bin/python3 或您正在使用的任何 python(比如虚拟环境)开头。
  • 好的,谢谢。我会调查这一切,并试着把我的头绕过去:-)
猜你喜欢
  • 1970-01-01
  • 2018-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-21
  • 2016-09-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多