Python Flask web app挂起

时间:2016-10-22 14:31:39

标签: python nginx flask gunicorn

我对python编程很新,我试图将几个终端命令作为http调用公开。我使用setup.py将下面的代码打包到tar.gz中,并在服务器上解压缩以运行nginx web服务器中的代码。一旦我使用下面的实例化app.py代码,http调用工作正常几个小时。不确定之后发生了什么,http页面显示错误,我确实看到应用程序正在服务器中运行。有人可以帮我这个

  

gunicorn --bind 0.0.0.0:8000 cstaradmin:app&

#!/usr/bin/env python
from flask import Flask
from shelljob import proc
from flask import Response
from flask import json,jsonify

def get_pretty_print(json_object):
    return json.dumps(json_object, sort_keys=False, indent=4, separators=('\n',' '))

def read_process(g):
    while g.is_pending():
        lines=g.readlines()
        for proc,line in lines:
            yield line

app = Flask(__name__)

def has_no_empty_params(rule):
    defaults = rule.defaults if rule.defaults is not None else ()
    arguments = rule.arguments if rule.arguments is not None else ()
    return len(defaults) >= len(arguments)


@app.route('/', methods = ['GET'])
def help():
    """Print available functions."""
    func_list = {}
    for rule in app.url_map.iter_rules():
        if rule.endpoint != 'static':
            func_list[rule.rule] = app.view_functions[rule.endpoint].__doc__
    return jsonify(func_list)

@app.route("/ps")
def IRR():
    IRR = ["ps"]
    g=proc.Group()
    p=g.run(IRR)
    return Response(read_process(g),mimetype= 'text/plain')
    def catch_all(path):
    return

if __name__ == "__main__":
    try:
        app.run(host='0.0.0.0',port=8000)
    except:
        pass

错误:

内部服务器错误服务器遇到内部错误,无法完成您的请求。服务器过载或应用程序中存在错误

[2016-10-22 15:38:55,505] ERROR in app: Exception on /path/ToMy/command [GET]
    Traceback (most recent call last):
      File "/usr/lib64/python2.7/site-packages/flask/app.py", line 1988, in wsgi_app
        response = self.full_dispatch_request()
      File "/usr/lib64/python2.7/site-packages/flask/app.py", line 1641, in full_dispatch_request
        rv = self.handle_user_exception(e)
      File "/usr/lib64/python2.7/site-packages/flask/app.py", line 1544, in handle_user_exception
        reraise(exc_type, exc_value, tb)
      File "/usr/lib64/python2.7/site-packages/flask/app.py", line 1639, in full_dispatch_request
        rv = self.dispatch_request()
      File "/usr/lib64/python2.7/site-packages/flask/app.py", line 1625, in dispatch_request
        return self.view_functions[rule.endpoint](**req.view_args)
      File "/path/ToMyapp/admin/cstaradmin.py", line 42, in listnodes
        p=g.run(listnodes)
      File "/usr/lib/python2.7/site-packages/shelljob/proc.py", line 53, in run
        CommandException( e, "Group.run '{}' failed".format( cmd ) ).do_raise()
      File "/usr/lib/python2.7/site-packages/shelljob/proc.py", line 51, in run
        return self._run_impl( cmd, shell )
      File "/usr/lib/python2.7/site-packages/shelljob/proc.py", line 63, in _run_impl
        stdin = subprocess.PIPE, # needed to detach from calling terminal (other wacky things can happen)
      File "/usr/lib64/python2.7/subprocess.py", line 711, in __init__
        errread, errwrite)
      File "/usr/lib64/python2.7/subprocess.py", line 1216, in _execute_child
        errpipe_read, errpipe_write = self.pipe_cloexec()
      File "/usr/lib64/python2.7/subprocess.py", line 1168, in pipe_cloexec
        r, w = os.pipe()
    CommandException: ("Group.run '['nodetool', ' status']' failed", OSError(24, 'Too many open files'))

0 个答案:

没有答案