Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何有效地从连接丢失中恢复?_Python_Request_Recover - Fatal编程技术网

Python 如何有效地从连接丢失中恢复?

Python 如何有效地从连接丢失中恢复?,python,request,recover,Python,Request,Recover,我使用“请求”模块以相对较高的频率从某个给定站点获取信息。 事实上,我想每10秒访问一次远程站点 我的代码如下: def get_response_without_ddos_suspect(request_url, timeout=10): while True: try: response = requests.get(request_url, timeout=timeout) print response

我使用“请求”模块以相对较高的频率从某个给定站点获取信息。 事实上,我想每10秒访问一次远程站点

我的代码如下:

def get_response_without_ddos_suspect(request_url, timeout=10):
    while True:
        try:
            response = requests.get(request_url, timeout=timeout)
            print response
        except Exception as e:
            print e
        time.sleep(10)
“request_url”是网站提供的一些访问api,因此没有问题。 我希望它能起作用,但事实上,该功能有时不能起作用。 我试图通过打印这些异常来捕获异常,以发现这只是一个简单的超时异常。 但我的函数再也得不到响应了。 我觉得函数正在等待一些永远不会出现的响应

但是,当我手动重新启动函数时,它会再次得到响应。 所以,我真的很困惑,不知道发生了什么。 这个问题困扰了我好几天,但在谷歌搜索并在Stackoverflow中寻找解决方案几天后,我自己没能解决它。 如何继续访问站点,同时避免在发生异常后不再获取数据。 由于它可以通过手动重新启动程序来恢复,因此应该存在某种方法使功能从故障中自动恢复。 请帮忙


我是python和spider的新手,因此请提供尽可能详细和彻底的解决方案。

您访问的站点是否有任何限制速率请求的策略?你这里的代码看起来很好,所以我想这可能是你无法控制的。真奇怪,没有限制速率请求的策略。最奇怪的是,我可以手动重新启动该功能,它工作正常,但无法从故障中自动恢复。我查看了请求代码,它正在为每个请求创建一个新会话,这意味着:每次调用url时,您都在创建一个全新的HTTP连接。因此,不是您的http连接正在消亡。你能检查那些无法检查失败原因/内容的http请求吗?@Greg我认为这不是http请求的问题,而是python线程的问题。现在我放弃线程,转而使用APScheduler,通过add_interval_作业同时启动4个spider。它工作得很好。。在罚单中了解这一点可能会有用。