Ich folgte diesem Tutorial: https://pawelmhm.github.io/asyncio/python/aiohttp/2016/04/22/asyncio-aiohttp.html und alles funktioniert gut, wenn ich wie 50 000 Anfragen mache. Aber ich brauche 1 milion API-Aufrufe zu tun, und dann habe ich Problem mit diesem Code:1 Million Anfragen mit aiohttp/asyncio machen - wörtlich
url = "http://some_url.com/?id={}"
tasks = set()
sem = asyncio.Semaphore(MAX_SIM_CONNS)
for i in range(1, LAST_ID + 1):
task = asyncio.ensure_future(bound_fetch(sem, url.format(i)))
tasks.add(task)
responses = asyncio.gather(*tasks)
return await responses
Da Python benötigt 1 milion Aufgaben zu erstellen, ist es im Grunde nur nacheilt und druckt dann Killed
Nachricht in Terminal. Gibt es eine Möglichkeit, einen Generator anstelle von vorgefertigten Set (oder Liste) von URLs zu verwenden? Vielen Dank.
Ist nicht Semaphor dafür? Selbst wenn ich Semaphor auf 10 setze, bekomme ich Verzögerung und "Killed" Nachricht. –
Ich habe das Beispiel aus dem Link versucht und es funktioniert. Wie der Autor sagte, etwa 11-12 Minuten für 1000000 Anfragen. Ich habe es sogar auf python3.4 eingestellt. Funktioniert hier. Vielleicht passiert etwas anderes mit Ihrem Code an einem anderen Ort. Kannst du den ganzen Code posten? – roman
Können Sie die 'dmesg'-Befehlsausgabe nach dem Abbruch des Programms und/oder den vollständigen Fehler des Python-Interpreters posten. Es sollte ein MemoryError sein. – amirouche