2017-11-10 22 views
0

Ich habe ein Python-Programm, das aiohttp und ElementTree verwendet, um Daten von einer Website zu holen. Der folgende Code ist ein Segment eines Diskord-Chat-Bot, der auf einem Raspberry Pi gehostet wird. Die Funktion funktioniert die meiste Zeit gut, aber nachdem der Bot für ein paar Tage eingeschaltet war, beginnt die Funktion zu versinken, und die Zeit läuft immer ab. Neustart des Programms behebt das Problem nicht, nur das Neustarten des Pi scheint das Problem für eine Weile zu lösen. Ich weiß, es ist nicht viel, um weiter zu gehen, aber gibt es ein offensichtliches Problem mit diesem Codeabschnitt, das das könnte, oder liegt das Problem woanders?Python - aiohttp Anfragen kontinuierlich Zeitüberschreitung

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

Wenn auch der Prozess Neustart nicht hilft - es ist offensichtlich nicht aiohttp Problem. –

Antwort

1

Vielleicht ein Speicherleck irgendwo, die langsam Systeme Speicher verbraucht, einmal voll alles sehr langsam wird als Swap für Speicherzuweisung verwendet wird und Timeouts auftreten.

Wie Andrew sagt, kann dies jedoch kein Problem mit dem Python-Skript sein oder es würde durch einen Neustart behoben werden.

Systemspeicher überwachen und von dort gehen.