python中的协程示例

1、参考: https://yanbin.blog/how-flask-work-with-asyncio/#more-10368

2、 先前使用queue.Queue,这个队列是自带锁机制,且其put,get方法可以使用阻塞,造成调用Flask的api接口发送socket消息时,有时能发,有时不能发的问题,后改为协程实现。

import asyncio

async def send_one_msg(self, msg):
	try:
		soc_bytes = self.get_pack_buf(msg)

		self.client.send(soc_bytes)
	except Exception as e:
		print("send_one_msg 发送失败:", str(e))

def async_send_on_msg(self, msg):
	try:
		try:
			loop = asyncio.get_event_loop()
		except RuntimeError as er:
			print(er.args[0], 'create a new EventLoop')
			loop = asyncio.new_event_loop()
		loop.run_until_complete(self.send_one_msg(msg))
		
		# python3.7才支持
        # asyncio.run(self.send_one_msg(msg))
	except Exception as e:
		print("async_send_on_msg 发送失败:", str(e))

3、感觉async, await与.net中的机制类似。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值