我正在使用Python SDK尝试使用Stateful Functions 2.1 API,但我看不出如何在不阻止应用程序的情况下对外部api进行异步调用的清晰方法。
这可能吗?或者有人可以在正确的路径上送我吗?
答案 0 :(得分:1)
从StateFun 2.2.0开始,您可以使用AsyncRequestReplyHandler。
来自docs:
Python SDK附带了一个附加处理程序, AsyncRequestReplyHandler,支持Python的等待函数 (协程)。该处理程序可以与异步Python一起使用 框架,例如aiohttp。
@functions.bind("example/hello")
async def hello(context, message):
response = await compute_greeting(message)
context.reply(response)
from aiohttp import web
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)
您可以看到here的完整示例。