我正在编写一个FastAPI应用程序,对于给定的路径操作,我需要调用两个函数:一个是不支持
async
的IO操作(我们称之为函数A
),另一个是支持async
的IO操作(我们称之为函数
B
)。它们需要按顺序调用,并且在此期间需要发生一些其他not IO操作。我想我有以下选择:
async
定义路径操作并照常调用
A
,然后
await
B.
async
定义路径操作,在线程池中运行
B
(例如
fastapi.concurrency.run_in_threadpool
),然后运行
await
B.
async
,照常调用
A
,然后使用事件循环中的
B
调用
run_until_complete
。
A
和
B
的确切实现。然而,我希望我能够对这种情况下发生的情况以及如果我无力运行基准来实现可能的精确实现时一般该怎么做有一些一般性的了解。
A
不会阻塞路径协程的唯一选项,并且函数
B
可以与函数
A
同时执行(因为两者都是 I/O 绑定任务) ).注意:您问题的选项 2 中可能有拼写错误,意思是 -> .. 在线程池中运行
A
..