ausführen Ich versuche zu verstehen, wie Sie einen asynchronen Prozess von Coroutine-Handler innerhalb aioweb Framework ausführen. Hier ist ein Beispiel für den Code ein:Wie async-Prozess von Handler in aiohttp
def process(request):
# this function can do some calc based on given request
# e.g. fetch/process some data and store it in DB
# but http handler don't need to wait for its completion
async def handle(request):
# process request
process(request) ### THIS SHOULD RUN ASYNCHRONOUSLY
# create response
response_data = {'status': 'ok'}
# Build JSON response
body = json.dumps(response_data).encode('utf-8')
return web.Response(body=body, content_type="application/json")
def main():
loop = asyncio.get_event_loop()
app = web.Application(loop=loop)
app.router.add_route('GET', '/', handle)
server = loop.create_server(app.make_handler(), '127.0.0.1', 8000)
print("Server started at http://127.0.0.1:8000")
loop.run_until_complete(server)
try:
loop.run_forever()
except KeyboardInterrupt:
pass
if __name__ == '__main__':
main()
Ich möchte process
Funktion asynchron vom Handler auszuführen. Kann mir jemand ein Beispiel geben, wie ich das erreichen kann? Ich bin schwer zu verstehen, wie ich die Main Event-Schleife innerhalb eines Handlers übergeben/verwenden kann und sie an eine andere Funktion weiterleite, die selbst einen asynchronen Prozess darin ausführen kann.