微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

生产者和消费者的Python Websocket

如何解决生产者和消费者的Python Websocket

我正在尝试创建一个websocket服务器,该服务器将接受来自一个客户端说A的消息并将其存储在队列中。然后有另一个客户端B将连接到websocket以读取将由队列弹出的消息。

要识别客户端,我正在使用不同的路径编辑请求url。下面是我的代码

import asyncio
import websockets
from queue import Queue

q = Queue(maxsize = 10)
async def consumer_handler(websocket,path):
    if path=="/":
        async for message in websocket:
            await consumer(message)
    
async def producer_handler(websocket,path):
    if path=="/read":
        while True:
            message = await producer()
            await websocket.send(message)

async def consumer(message): 
    
    q.put(message)
    
    
async def producer():   
         
    return q.get()        


async def handler(websocket,path):    
    loop = asyncio.get_event_loop()
    producer_task = loop.create_task(producer_handler(websocket,path))
    consumer_task = loop.create_task(consumer_handler(websocket,path))
    

start_server = websockets.serve(handler,"localhost",8765)


asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()

它不接受消息,客户端B也无法读取消息。

没有websocket.recv()行,我不明白它如何获取消息?

我确定文档中的生产者,消费者和处理程序方法的定义。

另外,当尝试从客户端B端重新打开连接时,它会挂在“打开”状态。

我是websocket编码的新手,请指导我哪里出错了

谢谢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。