关于 threading 连接多个 websocket 服务之后出现的疑问

2023-02-01 15:59:27 +08:00
 wuxiaolin

首先描述问题,通过 threading 去连接多个 websocket 服务,服务是都连接成功了。但是代码执行到“ws = WebSocketHandler(self.host, self.name)”之后就不执行了,初次接触,没找到原因,还请熟悉 python 的朋友给传授下经验

class ThreadingHandler(threading.Thread):
    host = ''
    name = ''
    q = ''

    def __init__(self, host, name, queue):
        '''
        重写父类 init
        :param host: 服务器地址
        :param name: 服务器名称
        '''

        super().__init__()

        self.host = host
        self.name = name
        self.q = queue

    def run(self):
        ws = WebSocketHandler(self.host, self.name)
		
        # 这里往后就没在执行了
        print(ws)

class WebSocketHandler():
    """
    socket handler
    """

    # websocket 服务地址
    host = ''

    # 服务器名称
    name = ''

    # websocket 实例
    socketInstance = ''

    # 服务链接状态
    connectStatus = False

    def __init__(self, host, name):
        '''
        :param host:服务器地址
        :param name:服务器名称
        :return
        '''

        self.host = host
        self.name = name

        # 连接服务器
        self.connect()

        return self.socketInstance

    def connect(self):
        '''
        链接服务器
        '''

        # debug 模式
        # websocket.enableTrace(True)

        self.socketInstance = websocket.WebSocketApp(
            self.host, 
            on_open = self.onOpen,
            on_message = self.onMessage,
            on_error = self.onError,
            on_close = self.onClose
        )

        self.socketInstance.run_forever(sslopt={"cert_reqs": ssl.CERT_NONE})
1178 次点击
所在节点    Python
2 条回复
learningman
2023-02-01 21:33:07 +08:00
__init__ 里执行了个叫 run_forever 的函数,block 不是很正常
wuxiaolin
2023-02-02 10:13:49 +08:00
@learningman 感谢解答

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/912277

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX