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}))
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。然后,呼叫链中的某些东西似乎没有关闭连接。我还在四处寻找选择。疯了。请回来报到,我很想知道。