我有一个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))
答案 0 :(得分:1)
也许是某个内存泄漏会慢慢耗尽系统内存,一旦所有内容变得非常慢,因为交换用于内存分配并发生超时。
然而,正如安德鲁所说,这不是python脚本的问题,或者可以通过重新启动它来解决。
监控系统内存并从那里开始。