Igal Shilman created FLINK-18518: ------------------------------------ Summary: Add Async RequestReply handler for the Python SDK Key: FLINK-18518 URL: https://issues.apache.org/jira/browse/FLINK-18518 Project: Flink Issue Type: Improvement Components: Stateful Functions Affects Versions: statefun-2.1.0 Reporter: Igal Shilman
I/O bound stateful functions can benefit from the built-in async/io support in Python, but the RequestReply handler is not an async-io compatible. See [this|https://stackoverflow.com/questions/62640283/flink-stateful-functions-async-calls-with-the-python-sdk] question on stackoverflow. Having an asyncio compatible handler will open the door to the usage of aiohttp for example: {code:java} import aiohttp import asyncio ... async def fetch(session, url): async with session.get(url) as response: return await response.text() @function.bind("example/hello") async def hello(context, message): async with aiohttp.ClientSession() as session: html = await fetch(session, 'http://python.org') context.pack_and_reply(SomeProtobufMessage(html)) from aiohttp import webhandler handler = AsyncRequestReplyHandler(functions) async def handle(request): req = await request.read() res = await handler(req) return web.Response(body=res, content_type="application/octet-stream'") app = web.Application() app.add_routes([web.post('/statefun', handle)]) if __name__ == '__main__': web.run_app(app, port=5000) {code} -- This message was sent by Atlassian Jira (v8.3.4#803005)