当数据集太大并且停止提供请求时,Flask API崩溃

时间:2017-02-17 01:59:03

标签: javascript python api flask tornado

我有一个龙卷风服务器在烧瓶前运行。每次请求大数据集时,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将停止为之后的任何请求工作。

输入一个额外的大日期范围后,每次发出请求后,我都会在邮递员身上收到此错误:

enter image description here

我能做些什么:

一个。使API更健壮,因此它也可以提供大型数据集? (我们在这里谈论约1600行)

或B.在Flask API文件中有一些逻辑,它会截断结果,但无论时间段如何都会提供。

我的烧瓶API,数据库,Tornado服务器或调用API的Javascript文件有问题吗?

请帮忙!感谢。

0 个答案:

没有答案