Python Tornado curl_httpclient';重置';连接

Python Tornado curl_httpclient';重置';连接,python,tornado,Python,Tornado,我有一个tornado应用程序,它使用curl_httpclient向http服务器发出请求。每隔一段时间,所有对服务器的调用都会返回不正确的结果。换句话说,http响应仍然正常,但服务器返回的内容变得不正确 我发现我可以通过终止并重新启动进程来解决这个问题,这似乎意味着如果我与服务器建立新的TCP连接并发送新的请求,事情就会好起来 现在我的问题是如何通过新的TCP连接发出HTTP请求。我试图用一个新的http客户机替换http客户机,如下所示,但似乎没有建立新的TCP连接,旧的连接被重用 ht

我有一个tornado应用程序,它使用curl_httpclient向http服务器发出请求。每隔一段时间,所有对服务器的调用都会返回不正确的结果。换句话说,http响应仍然正常,但服务器返回的内容变得不正确

我发现我可以通过终止并重新启动进程来解决这个问题,这似乎意味着如果我与服务器建立新的TCP连接并发送新的请求,事情就会好起来

现在我的问题是如何通过新的TCP连接发出HTTP请求。我试图用一个新的http客户机替换http客户机,如下所示,但似乎没有建立新的TCP连接,旧的连接被重用

http_client = tornado.httpclient.AsyncHTTPClient()

如何关闭现有TCP连接并与服务器建立新连接并继续业务?

您可以将
force\u instance=True
关键字参数传递给AsyncHTTPClient构造函数,以确保获得新对象,而不是重用旧对象,但这可能值得弄清楚为什么要获得新对象首先是“不正确”的结果

结果如何“不正确”?它不是一个格式良好的HTTP响应吗?它是对同一连接上的早期(或后续流水线)请求的响应,还是其他无关的响应


请确保您使用的是最新版本的libcurl-非常旧的版本在异步接口方面有过问题的历史,尽管我已经好几年没有看到任何问题了。请注意,如果您使用的是像centos这样移动缓慢的发行版,这可能意味着从源代码安装libcurl,而不是从您的发行版获得它n、 如果您对curl\u httpclient没有特殊需求,也可以使用tornado的simple\u httpclient。

响应是一个格式良好的HTTP响应,应用程序级格式也是正确的。但是它的内容是错误的。我认为问题出在web服务器应用程序上。它可能会时不时地进入竞争状态我正在使用force_instance=True参数,它现在创建了一个新实例,但它似乎仍在使用相同的TCP连接。有没有办法确保新实例创建了一个新的TCP连接?嗯,使用force_instance创建的客户端不应该与前一个共享任何内容。是吗您确定它与重用的TCP连接有关吗?正如我前面所说的;当前只有curl\u httpclient重用TCP连接;如果您使用simple\u httpclient,它将始终创建一个新连接(至少在Tornado 3.2中;连接重用应该在将来的版本中出现)