Python Flask API没有突然收到请求

Python Flask API没有突然收到请求,python,azure,flask,sqlalchemy,flask-restful,Python,Azure,Flask,Sqlalchemy,Flask Restful,我正在尝试在Flask中创建RESTAPI。问题是,它可以完美地运行几天,然后突然完全停止接收请求。忘记不回应请求;它只是一开始没有收到任何请求。这是我的剧本: from flask import Flask, jsonify from flask_restful import Resource, Api from flask_restful import reqparse from sqlalchemy import create_engine from flask.ext.httpauth

我正在尝试在Flask中创建RESTAPI。问题是,它可以完美地运行几天,然后突然完全停止接收请求。忘记不回应请求;它只是一开始没有收到任何请求。这是我的剧本:

from flask import Flask, jsonify
from flask_restful import Resource, Api
from flask_restful import reqparse
from sqlalchemy import create_engine
from flask.ext.httpauth import HTTPBasicAuth
from flask.ext.cors import CORS

conn_string = "mssql+pyodbc://x"
e = create_engine(conn_string)

auth = HTTPBasicAuth()

@auth.get_password
def get_password(username):
    if username == 'x':
        return 'x'
    return None

app = Flask(__name__)
cors = CORS(app)
api = Api(app)

class Report(Resource):
    decorators = [auth.login_required]

    def get(self):
        parser = reqparse.RequestParser()
        parser.add_argument('start', type = str)
        parser.add_argument('end', type = str)
        args = parser.parse_args()

        conn = e.connect()

        stat = """
        select a, b from report where c < ? and d > ?
        """

        query = conn.execute(stat, [args['start'], args['end']])

        json_dict = []

        for i in query.cursor.fetchall():


            res = {'aa': i[0], 'bb':i[1]}
            json_dict.append(res)

        conn.close()
        return jsonify(results=json_dict)

api.add_resource(Report, '/report')

if __name__ == '__main__':
    app.run(host='0.0.0.0')
从烧瓶导入烧瓶,jsonify
来自restful导入资源Api
从flask_restful导入请求解析
从sqlalchemy导入创建引擎
从flask.ext.httpauth导入HTTPBasicAuth
从flask.ext.cors导入cors
conn_string=“mssql+pyodbc://x”
e=创建引擎(连接字符串)
auth=HTTPBasicAuth()
@auth.get\u密码
def get_密码(用户名):
如果用户名='x':
返回“x”
一无所获
app=烧瓶(名称)
cors=cors(应用程序)
api=api(应用程序)
课堂报告(资源):
decorators=[auth.login\u必需]
def get(自我):
parser=reqparse.RequestParser()
parser.add_参数('start',type=str)
parser.add_参数('end',type=str)
args=parser.parse_args()
conn=e.connect()
stat=”“”
从报告中选择a、b,其中c<?和d>?
"""
query=conn.execute(stat[args['start'],args['end']))
json_dict=[]
对于query.cursor.fetchall()中的i:
res={'aa':i[0],'bb':i[1]}
json_dict.append(res)
康涅狄格州关闭
返回jsonify(results=json\u dict)
api.add_资源(报告“/Report”)
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
app.run(host='0.0.0.0')
我已尝试调试该问题,以下是我的观察结果:

1) Flask API在端口5000上运行,当我在端口5000上psp虚拟机时,我能够连接,这意味着进程实际上在虚拟机上正常运行

2) 在检查日志时,API甚至没有收到GET请求。如果有一些db错误,那么我会收到一条500错误消息,但请求一开始甚至不会发送到API

3) 如果我在本地调用API,那么问题仍然存在

4) 如果我对端口5000(我的flask API运行的地方)执行netstat,我会得到以下结果:


出于某种原因,我认为它没有关闭套接字连接。我听到了很多“亲密的等待”。这就是造成问题的原因吗?如何在我的代码中修复此问题?

通常,当您处于非常接近\u等待状态时,这意味着存在未关闭的套接字连接。您似乎已经在找到了答案,它利用Tornado构建了一个无阻塞的web服务器

可能是一只Werkzeug虫子。您似乎正在生产中使用Flask开发服务器。如果您想要长时间的正常运行,Werkzeug不够健壮,无法使用。切换到生产服务器(gunicorn、uWSGI),看看这是否能改善情况。很肯定这会给你带来更好的结果。