我有一些环形路线,我有两种路线。在
lein ring server
,使用lein-ring
插件org.httpkit.server
,比如(hs/run-server app {:port 3000}))
它是一个web应用程序(被一个角度.js浏览器客户端)。在
我使用请求库用Python编写了一些API测试:
my_r = requests.post(MY_ROUTE,
data=MY_DATA,
headers={"Content-Type": "application/json"},
timeout=10)
当我使用lein ring server
时,这个请求在JS客户机和Python测试中可以正常工作。在
当我使用httpkit
时,这在JS客户机中可以正常工作,但是Python客户机使用
socket.timeout: timed out
我不明白为什么Python客户机超时了。它发生在httpkit
而不是{
Content-Length
字段(15字节)。在你知道怎么了?在
我找到了解决这个问题的办法,但没有令人满意的解释。在
我使用^{} Ring中间件获取一个HashMap并将其转换为JSON。我转而使用^{} 在我的处理程序中执行自己的转换,这就修复了它。在
据推测,这可能与服务器处理输出缓冲有关,但这只是推测。在
我已经梳理了Wireshark的垃圾堆,我看不出两者之间有任何相关的区别。发送的
Content-Length
字段是相同的。“正在传输的字节”不同,分别为518和524。在对于为什么web浏览器对此满意,而Python请求却不满意,以及这是否是
Requests
、httpkit
、ring-middleware-format
或我自己的代码中的一个bug。在相关问题 更多 >
编程相关推荐