当前位置: 首页 > 面试题库 >

如何使Flask /使Ajax HTTP连接保持活动状态?

申屠昌胤
2023-03-14
问题内容

我有一个jQuery Ajax调用,如下所示:

    $("#tags").keyup(function(event) {
      $.ajax({url: "/terms",
        type: "POST",
        contentType: "application/json",
        data: JSON.stringify({"prefix": $("#tags").val() }),
        dataType: "json",
        success: function(response) { display_terms(response.terms); },
      });

我有这样的Flask方法:

@app.route("/terms", methods=["POST"])
def terms_by_prefix():
    req = flask.request.json
    tlist = terms.find_by_prefix(req["prefix"])
    return flask.jsonify({'terms': tlist})

tcpdump显示HTTP对话框:

POST /terms HTTP/1.1
Host: 127.0.0.1:5000
User-Agent: Mozilla/5.0 (X11; Linux i686; rv:12.0) Gecko/20100101 Firefox/12.0
Accept: application/json, text/javascript, */*; q=0.01
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Type: application/json; charset=UTF-8
X-Requested-With: XMLHttpRequest
Referer: http://127.0.0.1:5000/
Content-Length: 27
Pragma: no-cache
Cache-Control: no-cache

{"prefix":"foo"}

但是,Flask回复时没有保持活动状态。

HTTP/1.0 200 OK
Content-Type: application/json
Content-Length: 445
Server: Werkzeug/0.8.3 Python/2.7.2+
Date: Wed, 09 May 2012 17:55:04 GMT

{"terms": [...]}

确实没有实施保持活动的情况吗?


问题答案:

Werkzeug的集成Web服务器基于Python标准库的BaseHTTPServer构建。如果将HTTPHTTP协议版本设置为1.1,则BaseHTTPServer似乎支持Keep-
Alives。

Werkzeug不会这样做,但是如果您准备好使用Flaskhtml" target="_blank">实例化Werkzeug的BaseWSGIServer的机制,则可以自己完成。查看Flask.run()哪些电话werkzeug.serving.run_simple()。你要做的归结为BaseWSGIServer.protocol_version = "HTTP/1.1"

我尚未测试解决方案。我想您确实知道Flask的Web服务器应仅用于开发。



 类似资料:
  • 我有一个Android应用程序,即时通讯是其中一个关键功能。为了实现IM特性,我们使用基于的推送服务器。 编辑:我曾建议使用前台服务,但下午不喜欢通知托盘总是显示在状态栏,他希望保持干净。 任何建议都将不胜感激!

  • 问题内容: 错误代码:2013。查询期间丢失与MySQL服务器的连接 我正在使用MySQL Workbench。另外,我正在运行一批插入件,总共约1000行(例如,相乘1000次),每批插入都花费相当多的时间,其中一些超过600秒。 如何配置工作台,使其在一夜之间继续工作,而又不停止且不丢失连接? 问题答案: 从现在不可用的互联网档案中: 转到“编辑”->“首选项”->“ SQL编辑器”,然后将此

  • 问题内容: 我正在使用POST方法。我需要创建一次,并且应该使用Keep Alive Connection。但是我认为,它每次都会建立一个新的连接。 因此,我需要使用 保持活动 连接。 这是我的代码段,很多帮助将不胜感激。 而且logcat日志是: 问题答案: 10:07:29.746:D / org.apache.http.headers(1529):>>连接:保持活动 您正在要求保持活动状态。

  • 我正在创建一个客户端服务器应用程序。服务器已经设计好,等待从客户端连接。现在在客户机部分中,我希望在应用程序的整个生命周期中保持连接活动,并且只有当主客户机应用程序关闭或关闭或者服务器关闭它时,连接才会关闭。 在处理程序中我有:

  • 错误代码:2013。查询期间与MySQL服务器的连接中断 我正在使用MySQL工作台。另外,我正在运行一批插入,总共大约1000行(例如,乘以1000次),每批需要相当长的时间,其中一些时间超过600秒。 如何配置workbench,以便在不停止和不丢失连接的情况下继续通宵工作?

  • 问题内容: 我用来登录远程服务器。 问题 : 当我在工作场所时,它始终保持连接并且可以正常工作。不幸的是,在我在家中与远程服务器连接后,终端会在10到15分钟内死机。 控制台上没有错误/超时报告,但是光标不能再移动了。 输入检查登录用户时,那里有一些僵尸登录用户,我必须手动将其杀死。 这很烦人。谁能帮我? 问题答案: 在客户端运行的ssh守护程序(sshd),如果客户端变为静默(即,不发送信息),