Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python请求超时+;Clojure HttpKit服务器,但不是环形服务器_Python_Clojure_Python Requests_Ring_Http Kit - Fatal编程技术网

Python请求超时+;Clojure HttpKit服务器,但不是环形服务器

Python请求超时+;Clojure HttpKit服务器,但不是环形服务器,python,clojure,python-requests,ring,http-kit,Python,Clojure,Python Requests,Ring,Http Kit,我有一些环线,我正在运行两种方式之一 lein-ring服务器,带有lein-ring插件 使用org.httpkit.server,比如(hs/run-server-app{:port 3000})) 这是一个web应用程序(由Angular.js浏览器客户端使用) 我使用请求库用Python编写了一些API测试: my_r = requests.post(MY_ROUTE, data=MY_DATA, hea

我有一些环线,我正在运行两种方式之一

  • lein-ring服务器
    ,带有
    lein-ring
    插件
  • 使用
    org.httpkit.server
    ,比如
    (hs/run-server-app{:port 3000}))
  • 这是一个web应用程序(由Angular.js浏览器客户端使用)

    我使用请求库用Python编写了一些API测试:

    my_r = requests.post(MY_ROUTE,
                         data=MY_DATA,
                         headers={"Content-Type": "application/json"},
                         timeout=10)
    
    当我使用
    leinringserver
    时,这个请求在JS客户端和Python测试中运行良好

    当我使用
    httpkit
    时,这在JS客户机中可以正常工作,但是Python客户机会超时

    socket.timeout:超时

    我不明白Python客户端为什么超时。它发生在
    httpkit
    上,而不是
    lein-ring
    上,因此我只能假设原因与差异有关

    • 我看过WireShark的流量,两个网站都给出了正确的答案。两者都有相同的
      内容长度
      字段(15字节)
    • 我已经将线程数提高到10个(不需要),并且没有任何更改

    有什么问题吗?

    我找到了解决方法,但没有令人满意的解释

    我使用Ring中间件获取HashMap并将其转换为JSON。我切换到在我的处理程序中使用进行我自己的转换,这就解决了它

    据猜测,这可能与服务器处理输出缓冲有关,但这只是猜测

    我已经梳理了Wireshark垃圾场,我看不出两者之间有任何相关的区别。发送的
    内容长度
    字段相同。“飞行中的字节”不同,分别为518和524


    不知道为什么web浏览器对此感到满意,但Python请求却不满意,也不知道这是否是
    请求
    httpkit
    环中间件格式
    或我自己的代码中的错误。

    我基本上也有同样的问题。FWIW,看起来请求最终会使用基本python套接字库进行读取,直到接收到10K字节或EOF。然后,呼叫链中的某些东西似乎没有关闭连接。我还在四处寻找选择。疯了。请回来报到,我很想知道。