我有一个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)
答案 0 :(得分:0)
您在cron
中运行的程序,如果您经常需要更新结果,也可以在linux screen
中运行它。在本地计算机中,您在Flask
附带的开发服务器中运行Web应用程序。你不能在你的vps中使用它。我建议uwsgi
+ nginx
。
答案 1 :(得分:0)
关于网络应用程序(基于Miguel Grinbergs令人敬畏的Flask mega教程),我是否只需调用根文件夹中的“run.py”脚本并将其发送到后台,这样一旦我关闭了它,它仍处于活动状态外壳
不,您必须使用类似screen
的内容,但最好的方法是将您的应用程序作为服务运行,使用某种服务主管,确保您的应用程序在崩溃时自动重新启动。除了其他方面,uwsgi可以为您做到这一点。其他可能性为supervisord或runit。如果您的应用程序暴露在开放的互联网上,请不要忘记禁用Flask的调试模式。
如何确保网络上显示的数据始终是轮询计划保存的最新数据?它会在浏览器中自动重新加载吗?这些应该进一步隔离吗?
如果您未在应用内部实施某种形式的缓存,则会为每个请求呈现模板,因此应始终获取当前数据。另一方面,如果您希望浏览器中的页面在新数据到达时自动更新,而无需用户交互,则可以使用Javascript和长轮询实现该页面。这里很难给出具体建议,因为不清楚你究竟想做什么。