Angenommen, Sie möchten weiterhin Objekte auf einem Edge-Terminal erkennen und die Verarbeitungsergebnisse an den Server senden. Wenn die HTTP-POST-Verarbeitung während der Verarbeitung der Erkennungsschleife eingefügt wird, wird die Verarbeitung angehalten, bis eine Antwort zurückgegeben wird. Die asynchrone Kommunikation kann mithilfe des Python-Standards async / await realisiert werden. Ich werde zusammenfassen, wie man es benutzt.
import asyncio
import aiohttp
def say_something(future): # 5
print(future.result())
return 'hello!'
async def nested(counter):
return counter
async def test():
await asyncio.sleep(2) # 3
return'aaaaaaaaaaaaaaaaaaaa'
async def main():
rep = 0
counter = 0
while True:
if (counter % 100 == 0) and (counter != 0):
http_req = asyncio.create_task(test()) # 2
http_req.add_done_callback(say_something) # 4
counter = 0
print(f'rep: {rep}')
rep += 1
task = asyncio.create_task(nested(counter))
print(await task)
counter += 1
asyncio.run(main()) # 1
Erklärung zur Definition von Coroutin. Korrouten sind eine allgemeinere Form von Unterprogrammen, die mehrere Einstiegspunkte haben können. Das heißt, der Prozess kann von diesem Speicherort aus unterbrochen und neu gestartet werden.
Ein Bild wie ein Taskplaner ist in Ordnung. Durch Registrieren eines Collouts für die Ereignisschleife wird diese automatisch ausgeführt, gestoppt und erneut verarbeitet.
http-Anfragen verwendeten nicht die Anforderungsbibliothek, sondern eine Bibliothek namens aiohttp.
$ pip install aiohttp
HTTP-Anforderungen können in der folgenden Form als Collouts registriert werden.
async def process_http_request(data):
async with aiohttp.ClientSession() as session:
async with session.post(URL, json=data) as response:
return await response.text()
Recommended Posts