我有一个龙卷风服务器在烧瓶前运行。每次请求大数据集时,API都会崩溃并停止提供结果。
这是我的龙卷风文件:
import tornado.httpserver
import tornado.ioloop
import tornado.web
from trackyApi import app
from tornado.wsgi import WSGIContainer
from tornado.ioloop import IOLoop
from tornado.web import FallbackHandler
tr = WSGIContainer(app)
application = tornado.web.Application([
(r".*", FallbackHandler, dict(fallback=tr)),
])
if __name__ == '__main__':
http_server = tornado.httpserver.HTTPServer(application, ssl_options={
"certfile": "certificate.crt",
"keyfile": "keyfile-decrypted.key",
})
http_server.listen(5000)
IOLoop.instance().start()
这是我的烧瓶文件片段:
class Result(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()
query = """
SELECT *
FROM myview
WHERE [CreatedDate] BETWEEN ? AND ?
ORDER BY [CreatedDate] DESC
"""
connection = pyodbc.connect(connectionString)
cursor = connection.cursor()
execute_with_retry(cursor, query, [args['start'], args['end']])
json_dict = []
for i in cursor.fetchall():
res = {
'TicketId':i[0], 'CreatedDate':str(i[1]), etc...
}
json_dict.append(res)
cursor.close()
connection.close()
return jsonify(results=json_dict)
Javascript ajax call:
$.ajax({
url: api_url + 'Result',
type: 'GET',
dataType: 'json',
async: false,
headers: {
"Authorization": "Basic " + btoa( + ":" + )
},
data: {start: start_date, end: end_date},
success: function(result) {
data = result.results;
console.log(result.results[0]);
}
});
我在SQL数据库中的视图相当复杂,来自多个表的内连接。我不确定这是不是问题。
如果我的日期范围是过去3天,那么API工作正常。但是,如果我搜索一个月的时间范围,API将停止为之后的任何请求工作。
输入一个额外的大日期范围后,每次发出请求后,我都会在邮递员身上收到此错误:
我能做些什么:
一个。使API更健壮,因此它也可以提供大型数据集? (我们在这里谈论约1600行)
或B.在Flask API文件中有一些逻辑,它会截断结果,但无论时间段如何都会提供。
我的烧瓶API,数据库,Tornado服务器或调用API的Javascript文件有问题吗?
请帮忙!感谢。