托管一个烧瓶webapp和CRON激活的Python脚本“一起”

时间:2014-06-06 22:29:56

标签: python unix cron flask

我有一个Python程序,可以从Web上轮询数据,将其保存到数据库,然后发出条件警报。

我还有一个Web应用程序,它会将一些数据显示给网站。上述Python轮询程序将要显示的数据保存到由Web应用程序打开的Pickle对象。

他们最终会在我的VPS上托管

我在我的本地计算机上运行了该网络应用程序,但尚未将其发布到网络上。轮询程序每分钟通过CRON运行一次。

关于Web应用程序(由Miguel Grinbergs awesome Flask mega tutorial构建),我是否只需调用根文件夹中的“run.py”脚本并将其发送到后台,以便在关闭shell后它仍处于活动状态?

如何确保网络上显示的数据始终是轮询计划保存的最新数据?它会在浏览器中自动重新加载吗?这些应该进一步隔离吗?

文件结构如下

my_program_root_FOLDER
- run.py (for web_app)
- polling_program_code_FOLDER
-- file_run_via_CRON_for_polling
- web_app_FOLDER
-- static_FOLDER
--- Pickle_object (with data for web app)

2 个答案:

答案 0 :(得分:0)

您在cron中运行的程序,如果您经常需要更新结果,也可以在linux screen中运行它。在本地计算机中,您在Flask附带的开发服务器中运行Web应用程序。你不能在你的vps中使用它。我建议uwsgi + nginx

答案 1 :(得分:0)

  

关于网络应用程序(基于Miguel Grinbergs令人敬畏的Flask mega教程),我是否只需调用根文件夹中的“run.py”脚本并将其发送到后台,这样一旦我关闭了它,它仍处于活动状态外壳

不,您必须使用类似screen的内容,但最好的方法是将您的应用程序作为服务运行,使用某种服务主管,确保您的应用程序在崩溃时自动重新启动。除了其他方面,uwsgi可以为您做到这一点。其他可能性为supervisordrunit。如果您的应用程序暴露在开放的互联网上,请不要忘记禁用Flask的调试模式。

  

如何确保网络上显示的数据始终是轮询计划保存的最新数据?它会在浏览器中自动重新加载吗?这些应该进一步隔离吗?

如果您未在应用内部实施某种形式的缓存,则会为每个请求呈现模板,因此应始终获取当前数据。另一方面,如果您希望浏览器中的页面在新数据到达时自动更新,而无需用户交互,则可以使用Javascript和长轮询实现该页面。这里很难给出具体建议,因为不清楚你究竟想做什么。