Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
一台设备上出现Python socketio badnamespaceerror异常,但另一台设备不工作_Python_Python 3.x_Python Socketio - Fatal编程技术网

一台设备上出现Python socketio badnamespaceerror异常,但另一台设备不工作

一台设备上出现Python socketio badnamespaceerror异常,但另一台设备不工作,python,python-3.x,python-socketio,Python,Python 3.x,Python Socketio,大家好,我有下面的代码,但出于某种原因,我不断得到以下错误,但它似乎在同事的pc上工作。我们似乎无法找出为什么这在我的电脑上不起作用 我们还仔细检查了是否正在使用dir()导入相同的socketio 我尝试在sio.connect和sio.emit中指定名称空间,但仍然没有成功 socketio.exceptions.BadNamespaceError:/不是已连接的命名空间。 bearerToken = 'REDACT' core = 'REDACT' output = 'REDACT'

大家好,我有下面的代码,但出于某种原因,我不断得到以下错误,但它似乎在同事的pc上工作。我们似乎无法找出为什么这在我的电脑上不起作用

我们还仔细检查了是否正在使用dir()导入相同的socketio

我尝试在sio.connect和sio.emit中指定名称空间,但仍然没有成功

socketio.exceptions.BadNamespaceError:/不是已连接的命名空间。

bearerToken = 'REDACT'

core = 'REDACT'
output = 'REDACT'


import socketio
import json

def getListeners(token, coreUrl, outputId):
    sio = socketio.Client(reconnection_attempts=5, request_timeout=5)
    sio.connect(url=coreUrl, transports='websocket')

    @sio.on('mwedge:batch:stats')
    def batchStats(data):
        if (outputId in data['outputStats']):
            listeners = data['outputStats'][outputId][16]
            print("Number of listeners ", len(listeners))
            ips = []
            for listener in listeners:
                ips.append(listener[1])
            print("Ips", ips)

    def authCallback(data):
        print(json.dumps(data))

    sio.emit(event='auth',
    data={
        'token': token
    },
    callback=authCallback)


getListeners(bearerToken, core, output)

IO连接涉及客户端和服务器之间的大量交换。
connect()
函数启动此过程,但此过程在后台继续。当调用
connect
事件的处理程序时,连接结束。此时可以发射

代码的问题在于,您没有等待连接握手完成,因此您的
emit()
调用会在建立连接之前进行。解决方案是添加一个
connect
事件处理程序,并将
emit()
调用移动到那里

另外,我建议您在调用
connect()
函数之前设置事件处理程序