Flask 脚本,运行一段时间后无响应

2017-05-02 09:49:52 +08:00
 csensix

代码如下:

# -*- coding:utf-8 -*-
import flask
import subprocess

app = flask.Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

@app.route("/api/clear",methods=['POST'])
def clear():
    domains = flask.request.form
    for k in domains:
        if domains[k].strip() != '':
            #os.system('rm -rf /data/proxy_cache_dir/'+ domains[k])
            subprocess.call('rm -rf /data/proxy_cache_dir/' + domains[k], shell=True)

    return domains['domain']

@app.route("/apinew/clear",methods=['POST'])
def new_clear():
    domains = flask.request.form
    for k in domains:
        if domains[k].strip() != '':
            #os.system('rm -rf /data/proxy_cache_dir/'+ domains[k])
            subprocess.call('rm -rf /data/proxy_cache_dir/' + domains[k], shell=True)

    return domains['0']

if __name__ == "__main__":
    app.run(host='0.0.0.0',port=5000)

同样也是这样一段代码,在之前的一台服务器上一直运行良好。现在百度云服务器上运行,过一段时间就会无法响应,要关掉进程重新运行。 在 subprocess.call 方法之前,用的是 os.system,也会有同样的问题,而且正常运行的时间更短。希望大伙给给建议,应该从哪方面着手解决。

4013 次点击
所在节点    问与答
5 条回复
wwqgtxx
2017-05-02 10:25:25 +08:00
没有错误日志输出么?多加点 log,多 try except 看看到底那在哪里了
TheCure
2017-05-02 10:26:29 +08:00
去找百度云, 他们家的服务经常出问题

利益相关: 前百度云员工 23333
TheCure
2017-05-02 10:33:20 +08:00
好了, 认真回答下,个人猜测, flask 是单线程的, 有可能你去 call 命令的时候 hang 住了就会导致整个 web 服务没法相应.
比如 rm -rf /data/ 这个命令很久都没有返回
如果你把 CDS 目录挂到了 /data 或者你的根目录压根就是远端的分布式存储, 这里是有可能 hang 住的, 因为 IO read only 了.
以上都是扯淡, 用百度云的壮士,祝你好运
csensix
2017-05-02 16:38:38 +08:00
@callofmx 我也往这方面想过,不排除这方面原因。但同样的脚本,在公司自己服务器上运行了一年多,从来没出过类似问题,这就很让我不解
Tyanboot
2017-05-03 11:36:42 +08:00
直接 app.run 一直就有这问题。。换 gunicron 或者 uwsgi 跑吧。

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

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

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

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

© 2021 V2EX