Tornado curl_httpclient'重置'连接

时间:2014-02-01 15:08:55

标签: python tornado

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

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

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

http_client = tornado.httpclient.AsyncHTTPClient()

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

1 个答案:

答案 0 :(得分:0)

您可以将force_instance=True关键字参数传递给AsyncHTTPClient构造函数,以确保您获得一个新对象而不是重用旧对象,但是可能值得弄清楚为什么您会得到“不正确”的结果。第一名。

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

确保您使用的是最新版本的libcurl - 非常旧的版本有异步接口问题的历史,尽管我在几年内没有看到任何问题。请注意,如果您使用像centos这样的缓慢移动的分发,这可能意味着从源代码安装libcurl而不是从您的发行版中获取它。如果您对curl_httpclient没有特殊需求,您也可以使用tornado的simple_httpclient。