
代码如下:
# -*- 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,也会有同样的问题,而且正常运行的时间更短。希望大伙给给建议,应该从哪方面着手解决。
1 wwqgtxx 2017-05-02 10:25:25 +08:00 via iPhone 没有错误日志输出么?多加点 log,多 try except 看看到底那在哪里了 |
2 TheCure 2017-05-02 10:26:29 +08:00 去找百度云, 他们家的服务经常出问题 利益相关: 前百度云员工 23333 |
3 TheCure 2017-05-02 10:33:20 +08:00 好了, 认真回答下,个人猜测, flask 是单线程的, 有可能你去 call 命令的时候 hang 住了就会导致整个 web 服务没法相应. 比如 rm -rf /data/ 这个命令很久都没有返回 如果你把 CDS 目录挂到了 /data 或者你的根目录压根就是远端的分布式存储, 这里是有可能 hang 住的, 因为 IO read only 了. 以上都是扯淡, 用百度云的壮士,祝你好运 |