Python请求+Clojure HttpKit服务器但不响铃时超时

2024-05-15 12:03:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些环形路线,我有两种路线。在

  1. lein ring server,使用lein-ring插件
  2. 使用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而不是{},所以我只能假设原因与差异有关。在

  • 我查看了WireShark的流量,两个看起来都给出了正确的响应。两者都有相同的Content-Length字段(15字节)。在
  • 我已经将线程数提高到10个(不需要),而且没有任何变化。在

你知道怎么了?在


Tags: runorg插件客户机servermyjstimeout
1条回答
网友
1楼 · 发布于 2024-05-15 12:03:52

我找到了解决这个问题的办法,但没有令人满意的解释。在

我使用^{}Ring中间件获取一个HashMap并将其转换为JSON。我转而使用^{}在我的处理程序中执行自己的转换,这就修复了它。在

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

我已经梳理了Wireshark的垃圾堆,我看不出两者之间有任何相关的区别。发送的Content-Length字段是相同的。“正在传输的字节”不同,分别为518和524。在

对于为什么web浏览器对此满意,而Python请求却不满意,以及这是否是Requestshttpkitring-middleware-format或我自己的代码中的一个bug。在

相关问题 更多 >