0

我正在寻找一种在浮士德代理中运行非异步库的好方法:

@app.agent(topic)
async def cp_agent(cp_stream):
    async for batch in cp_stream.take(100, within=5):
        print("------ Indexing a CPE  BATCH -----")
        [... Here Use of A NONE Async Function like elastic-dsl]

我阅读了 将 Faust 添加到您的现有架构的帖子, 我推断我们只需要在 faust 中使用 IO/Async 库。现在有办法将非异步库变成 faust 吗?我看到一些猴子用 : (gevent 和 eventlet) 修补,但似乎不起作用

4

1 回答 1

0

简短的回答:不,你不能在里面使用阻塞库faust。使用官方 python 库中的async/await 支持或使用aioelasticsearch 之类的东西。

登录回答:是的,你可以,这很容易开始,但是

深入了解如何将 asyncio 与现有的阻塞库一起使用?找到解决方案。但请仔细阅读此asyncio 的第一个答案,将普通函数包装为 asynchronous

请在开始长答案解决方案之前三思而后行。

于 2020-09-19T20:09:54.977 回答