python socket send 异步_理解python套接字io/aiohttp中的异步等待

我正试图设置一个插座.io使用python-socketio的服务器。

下面是一个最小的工作示例:import asyncio

from aiohttp import web

import socketio

import random

sio = socketio.AsyncServer(async_mode='aiohttp')

app = web.Application()

sio.attach(app)

@sio.on('connect')

def connect(sid, environ):

print("connected: ", sid)

@sio.on('sendText')

async def message(sid, data):

print("message ", data)

# await asyncio.sleep(1 * random.random())

# print('waited', data)

@sio.on('disconnect')

def disconnect(sid):

print('disconnect ', sid)

if __name__ == '__main__':

web.run_app(app, host='0.0.0.0', port=8080)

运行良好,我可以执行节点.js)例如

^{pr2}$

如果我运行服务器并运行上面的节点脚本,我将得到服务器端connected: c1e687f0e2724b339fcdbefdb5aaa8f8

message hey 1

message hey 2

message hey 3

但是,如果我取消了代码中await sleep行的注释,那么我只收到第一条消息:connected: 816fb6700f5143f7875b20a252c65f33

message hey 1

waited hey 1

我不明白为什么下一条消息没有出现。

一次只能运行async def message的一个实例吗?或者为什么?在

我确信我并没有理解一些非常基本的东西是如何运作的。如果有人能指出我不理解的地方,我将不胜感激。在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值