2017-11-10 3 views
0

aiohttp 및 ElementTree를 사용하여 웹 사이트에서 데이터를 가져 오는 Python 프로그램이 있습니다. 아래 코드는 Raspberry Pi에서 호스팅되는 Discord 채팅 봇의 세그먼트입니다. 이 기능은 대부분 잘 작동하지만 봇이 며칠간 켜져 있으면 기능이 멈추기 시작하고 항상 시간이 초과됩니다. 프로그램을 다시 시작하면 문제가 해결되지 않고 Pi를 재부팅하면 잠시 동안 문제가 해결되는 것 같습니다. 계속 진행할 것은별로 없다는 것을 알고 있지만,이 경우에 해당되는 코드 세그먼트에는 분명한 문제가 있습니까? 아니면 다른 곳에 문제가 있습니까?Python - aiohttp가 지속적으로 시간 제한을 요청합니다.

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

프로세스를 재시작해도 도움이되지 않으면 분명히 aiohttp 문제가 아닙니다. –

답변

1

아마도 메모리 누수가 발생하여 시스템 메모리를 천천히 사용하고, 전체 메모리는 스왑이 메모리 할당과 시간 초과로 인해 매우 느리게됩니다.

그러나 앤드류 (Andrew)는 파이썬 스크립트에 문제가 없거나 다시 시작하여 문제가 해결 될 것이라고 말합니다.

시스템 메모리를 모니터링하고 거기서 이동하십시오.

관련 문제