Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.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
使用socketio和eventlet的Python WebSocket-无法杀死eventlet服务器_Python_Websocket_Socket.io_Eventlet_Python Socketio - Fatal编程技术网

使用socketio和eventlet的Python WebSocket-无法杀死eventlet服务器

使用socketio和eventlet的Python WebSocket-无法杀死eventlet服务器,python,websocket,socket.io,eventlet,python-socketio,Python,Websocket,Socket.io,Eventlet,Python Socketio,我在我的应用程序中添加了一个websocket服务器,这样它就可以与自己的基于web的版本进行通信。 为此,我使用eventlet 我遇到的问题是,一旦启动服务器,我就无法让它死掉。即使关闭应用程序,进程仍在后台运行,而服务器保持活动状态。我已经在谷歌上搜索和测试随机的东西好几天了,只是不能让它发生。我希望这里有人能帮助我 目前,我有一个singleton类,该类具有启动侦听的函数: def run_server(self, addr, port): eventlet.w

我在我的应用程序中添加了一个websocket服务器,这样它就可以与自己的基于web的版本进行通信。 为此,我使用eventlet

我遇到的问题是,一旦启动服务器,我就无法让它死掉。即使关闭应用程序,进程仍在后台运行,而服务器保持活动状态。我已经在谷歌上搜索和测试随机的东西好几天了,只是不能让它发生。我希望这里有人能帮助我

目前,我有一个singleton类,该类具有启动侦听的函数:

    def run_server(self, addr, port):
        eventlet.wsgi.server(eventlet.listen((addr, port)), self.APP)
有关信息,该应用程序为:

socketio.WSGIApp(SIO, static_files={'/': {'content_type': 'text/html',
                                                    'filename': 'index.html'}})
然后我在应用程序中的线程上启动此服务器:

def run_on_thread(addr, port):
    obj = WebSocket()
    t = threading.Thread(target=obj.run_server, args=(addr, port))
    t.setDaemon(True)
    return obj, t
线程在我的应用程序中启动,如前所述,一切正常。我所有的信息都被发送和接收


但在我结束python进程上的任务之前,我找不到任何东西会杀死此服务器。

当使用WebSocket时,eventlet web服务器当前没有良好的停止机制。以下警告出现在中:

警告:目前,server()将始终等待活动连接完成后再退出,即使其中引发了异常(所有异常都以相同的方式处理,包括greenlet.GreenletExit和从BaseException继承的异常)

虽然这在正常情况下可能不是问题,但当涉及到长时间运行的HTTP连接(如eventlet.websocket)时,就会出现问题,并且在运行服务器的线程上调用wait()可能会挂起,即使在使用kill()之后,只要存在活动连接


0_0. 哇!可以谢谢你,我想哈哈。我切换到烧瓶,强制断开所有SID,然后我可以杀死烧瓶。所以我会坚持下去