如何在 flask web 服务器上自动运行一个脚本

2017-04-21 13:35:18 +08:00
 mzmxcvbn

想做一个工业数据监控的 B/S 系统,服务器定时采集底下硬件的数据,用户可以通过浏览器访问服务器看到实时数据。现在 flask 服务器架好了,底下数据采集的 py 脚本也写好了,但我不知道如何能让服务器一启动就一直运行那个定时采集数据的脚本,然后这个采集上来的数据应该怎么传递?

6098 次点击
所在节点    Flask
24 条回复
ppwangs
2017-04-21 14:53:54 +08:00
我当时也有和你差不多同样的问题,然后用搜索引擎解决了
zhuf
2017-04-21 15:01:37 +08:00
crontab
mzmxcvbn
2017-04-21 15:03:36 +08:00
@ppwangs 能给个关键字吗,搜了好久了
iPhone8
2017-04-21 15:07:02 +08:00
二楼说的很明确了
mlyy
2017-04-21 15:09:35 +08:00
celery ,注意搜 beat
mzmxcvbn
2017-04-21 15:14:46 +08:00
@iPhone8 我这个数据获取是按秒来采集的,定时任务不行吧。。。
HypoChen
2017-04-21 15:16:13 +08:00
celery beat
mzmxcvbn
2017-04-21 15:18:54 +08:00
关键不是定时,定时在数据采集的脚本用循环就好了。关键是这个脚本要跟着 web 服务一起起来,而且这个拿到的数据怎么传给服务器。
liprais
2017-04-21 15:27:13 +08:00
@mzmxcvbn 写个 shell 脚本启动服务器的时候一起调起来,数据写数据库或者随便啥 store,前端展示的时候去读
mzmxcvbn
2017-04-21 15:45:27 +08:00
@mlyy 我想问一下 celery 能让一个 while true 死循环的任务一直运行吗,让后把收到的数据存在一个地方(循环一次更新一次), web 服务器需要的时候再从那里读这个数据
mzmxcvbn
2017-04-21 15:45:32 +08:00
@HypoChen 我想问一下 celery 能让一个 while true 死循环的任务一直运行吗,让后把收到的数据存在一个地方(循环一次更新一次), web 服务器需要的时候再从那里读这个数据
HypoChen
2017-04-21 15:48:54 +08:00
@mzmxcvbn celery beat 支持每隔一定时间(精确到秒)便执行一次任务,文档有写。至于数据,直接扔数据库不好么, web server 直接去数据库拿
wwqgtxx
2017-04-21 16:39:05 +08:00
最简单的还是开个单独的线程 while True 跑,然后把结果丢进数据库或者消息队列
mzmxcvbn
2017-04-21 16:47:48 +08:00
@wwqgtxx 我一开始也是这么想的,就是不知道这个线程应该在哪里开, flask 有这个启动的监控吗
mzmxcvbn
2017-04-21 16:48:15 +08:00
@HypoChen 谢谢,我去找找
wwqgtxx
2017-04-21 16:49:15 +08:00
@mzmxcvbn app.before_first_request
modm
2017-04-21 18:23:41 +08:00
apscheduler
rookiebulls
2017-04-21 19:43:07 +08:00
apscheduler+1
kingsonl
2017-04-21 22:44:31 +08:00
apscheduler+1
clino
2017-04-21 22:47:17 +08:00
jenkins buildbot

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/356400

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX