Python - aiohttp请求不断超时

时间:2017-11-10 03:08:08

标签: python raspberry-pi aiohttp

我有一个Python程序,它使用aiohttp和ElementTree从网站获取数据。下面的代码是Raspberry Pi上托管的Discord聊天机器人的一部分。该功能在大多数情况下运行良好,但在机器人开启几天后,该功能开始陷入困境,并且总是超时。重新启动程序并不能解决问题,只重新启动Pi似乎可以解决问题一段时间。我知道继续下去并不是很多,但这段代码是否有明显的问题可以解决这个问题,或者问题出在其他地方?

import lxml.etree as ET
import aiohttp, async_timeout
...

async with aiohttp.ClientSession() as session:
   try:
      with async_timeout.timeout(5):
         async with session.get('https://example.com', params=params, headers=headers) as resp:
            if resp.status == 200:
               root = ET.fromstring(await resp.text(), ET.HTMLParser())
               # Do stuff with root
            else:
               print("Error: {}".format(resp.response))
   except Exception as e:
      print("Timeout error {}".format(e))

1 个答案:

答案 0 :(得分:1)

也许是某个内存泄漏会慢慢耗尽系统内存,一旦所有内容变得非常慢,因为交换用于内存分配并发生超时。

然而,正如安德鲁所说,这不是python脚本的问题,或者可以通过重新启动它来解决。

监控系统内存并从那里开始。