在长时间运行的POST请求中避免服务器超时

时间:2015-08-31 10:58:45

标签: python post solr timeout

我正在使用python requests库发送POST请求并从迭代器中读取数据。

如果迭代器快速生成数据,则所有数据都能完美运行。

问题是我的迭代器有时“休息一下”,服务器由于不活动而断开连接,我的客户端在套接字级别引发Broken pipe异常。我无法避免源迭代器上的暂停,因为它们取决于计算时间。

服务器是SOLR,但我认为这应该是一个更普遍的问题。

更确切地说,情况是这样的(我正在简化,因为原始代码非常复杂):

import requests
def myObjectsIter():
    #this generator yields custom objects and sometimes pauses

def myObjectsSerializerIter():
    yield "<add>"
    for o in myObjectsIter():
        #o.serialize returns an XML string for SOLR update (<doc>...</doc>)
        yield o.serialize()
    yield "</add>"

requests.post("http://mysolr/mycore/update", data=myObjectsSerializerIter())

#When myObjectsIter pauses for more than (i think) 60 seconds the last call raises [Errno 32] Broken pipe

有没有人知道避免这种情况的好习惯?

0 个答案:

没有答案