python同步和异步,python 异步调用
同步和异步侧重于消息通信机制。下面这篇文章主要介绍Python同步方法改成异步方法的相关信息。通过示例代码非常详细的介绍,有需要的朋友可以参考一下。
00-1010背景呢?Asyncerawaitableaioify摘要
目录
在我们平时的FastApi工作中,经常会用到一些异步操作。为了保持一致,我们通常会编写匹配的异步代码。
但是如果我们给用户提供类似jmeter BeanShell的可执行代码的功能,用户还能给你写异步代码吗?那显然是不可能的。
还有一种情况,当我们引入第三方的包,比如一些oss库,这些包自然是同步的方法,有内置的请求。如果不想阻塞整个fastapi服务,还需要同步它们。
背景
先给我点时间研究一下这篇文章。我还没有完全理解它的内容。最初的想法是通过loop.run_in_executor执行同步代码,让它超越三界,防止它阻塞事件循环。
现在还不确定,等了解清楚了再补充。没有现成的方案吗?答案是肯定的,不止我一个人想这么做!
为此我调查了几个库,都可以很好的解决这个问题。下面就一个一个介绍吧。
怎么做?
第一个地址是asyncer.tiangolo.com/. 3360号
这是FastApi著名作者在休闲娱乐时写的一个工具。它不仅可以同步同步代码,还可以同步异步代码。先来看看介绍。
简单来看,上面的同步方法(内部使用sleep)被asyncify包装,变成了一个可实现的方法,也就是异步化。不过,既然我没有真正用过,那就看在作者的份上给我推荐一下吧。
AnyIO.run,因为这个库是基于AnyIO(另一个奇怪的知识点)编写的,所以我觉得应该和asyncio.run一样有效
总之,既然作者的介绍符合我们的预期,我们推荐。
pip安装异步机
Asyncer
这个图书馆挺好的。是乌拉哥写的。里面全是我看不懂的俄语笔记,不过我试过了,功能很完善,很好用。不信你看看:
正在等待安装pip
使用
和上面不同的是,他只是修饰了同步方法,所以可以作为异步方法。是不是很神奇!
我已经测试过了,效果很好。因为它还具有异步方法的其他特征,比如取消。具体可以参考我介绍给下面库的图片样本代码。
awaitable
这是我接触的第一个同步到异步的库,所以我也提到了它的问题。图为我在测试了一个同步方法的异步后,是否可以取消类似的操作。这是我用来判断是否被屏蔽的一个因素。
一开始我发现如果遇到time.sleep这样的同步方法,这个方法好像行不通,就是还是会阻塞。这个库的作者给了我一个回答,大意是我又做了一遍,可以如期完成。但是我还没试过。我试着看了源代码,但没有结果。
pip安装aioify
最后我仔细看了awaitable的源代码,比较短。如果我有时间,我会仔细地谈论它。更重要的是,我要调查开篇部分。你也可以勇敢一点,试试下面介绍的几个库。
aioify
关于Python同步方法变异步方法的这篇文章到此为止。关于Python同步方法变异步方法的更多信息,请搜索热门IT软件开发工作室之前的文章或者继续浏览下面的相关文章。希望大家以后多多支持热门IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。