V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
csensix
V2EX  ›  问与答

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

  •  
  •   csensix · 2017-05-02 09:49:52 +08:00 · 4021 次点击
    这是一个创建于 2797 天前的主题,其中的信息可能已经有所发展或是发生改变。

    代码如下:

    # -*- 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,也会有同样的问题,而且正常运行的时间更短。希望大伙给给建议,应该从哪方面着手解决。

    5 条回复    2017-05-03 11:36:42 +08:00
    wwqgtxx
        1
    wwqgtxx  
       2017-05-02 10:25:25 +08:00 via iPhone
    没有错误日志输出么?多加点 log,多 try except 看看到底那在哪里了
    TheCure
        2
    TheCure  
       2017-05-02 10:26:29 +08:00
    去找百度云, 他们家的服务经常出问题

    利益相关: 前百度云员工 23333
    TheCure
        3
    TheCure  
       2017-05-02 10:33:20 +08:00
    好了, 认真回答下,个人猜测, flask 是单线程的, 有可能你去 call 命令的时候 hang 住了就会导致整个 web 服务没法相应.
    比如 rm -rf /data/ 这个命令很久都没有返回
    如果你把 CDS 目录挂到了 /data 或者你的根目录压根就是远端的分布式存储, 这里是有可能 hang 住的, 因为 IO read only 了.
    以上都是扯淡, 用百度云的壮士,祝你好运
    csensix
        4
    csensix  
    OP
       2017-05-02 16:38:38 +08:00
    @callofmx 我也往这方面想过,不排除这方面原因。但同样的脚本,在公司自己服务器上运行了一年多,从来没出过类似问题,这就很让我不解
    Tyanboot
        5
    Tyanboot  
       2017-05-03 11:36:42 +08:00 via Android
    直接 app.run 一直就有这问题。。换 gunicron 或者 uwsgi 跑吧。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2767 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 14:30 · PVG 22:30 · LAX 06:30 · JFK 09:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.