Ich habe den folgenden Code, die für eine gewisse Zeit in Ordnung läuft, aber schließlich nicht mit einem „Maximum Rekursionstiefe überschritten“ Fehler:Python: Maximale Rekursionstiefe überschritten Fehler
def getImg(data):
if data and len(data) > 0:
for entry in data:
print " -- Entry name", entry[‘url’]
# eventually grab an img using the entry[‘url’] data
time.sleep(6)
else:
print “no entry”
offset = offset + 1
queryDb(offset)
def queryDb(offset):
offset = str(offset)
cur.execute("SELECT name FROM mutable OFFSET " + offset + " LIMIT 1");
result = cur.fetchone()
id = result[0]
url="http://localhost:8080/?query=" + id
r=requests.get(url)
getImg(json.loads(r.content), artistName, gid)
queryDb(0)
Der Code ist im Grunde über eine Datenbank looping Tabelle mit einem inkrementierenden Offset. Es ruft dann getImg
an, die einige Bilder (wie in Daten angegeben) von einer Website abrufen und dann queryDb
erneut mit einem erhöhten Index aufrufen. Es kann mehrere Einträge in den Daten geben und die Website hat ein Ratenlimit (daher der Schlaf), so dass der beste Weg zu sein scheint, die Schleife mit dem Schlaf zwischen jedem Aufruf laufen zu lassen, und einmal fertig ist, dann rufe queryDb erneut auf.
Problem ist das verursacht den Rekursionsfehler.
Was ist ein besserer Weg dies zu tun, während das Rekursionsproblem vermieden wird?
queryDB ruft getImg, dann ruft getImg queryDB und so weiter für immer ... – ForceBru
'queryDb' ruft' getImg', die ruft 'queryDb' auf, die' getImg' aufruft ... –
Ja, das weiß ich. Die Frage ist, wie kann ich das ohne Rekursion erreichen? –