如何同时 运行 多个 eventlet 服务器?
How to run multiple eventlet servers at the same time?
我正在尝试设置两个同时侦听不同端口的 eventlet 服务器。
下面代码中的第一个服务器用于 SocketIO 实现,第二个服务器用于外部连接。两者分别发挥作用,但不能同时发挥作用。
if __name__ == '__main__':
eventlet.wsgi.server(eventlet.listen(('0.0.0.0', 4000)), app)
s = eventlet.listen(('0.0.0.0', 6000))
pool = eventlet.GreenPool(5)
while True:
c, address = s.accept()
pool.spawn_n(function, c)
问题是 eventlet.wsgi.server()
函数没有 return,它运行循环来侦听和处理 Flask-SocketIO 服务器的 HTTP 请求。
您需要做的是将两台服务器中的一台移动到后台线程。例如,您可以将 Flask-SocketIO 服务器移动到后台线程,如下所示:
if __name__ == '__main__':
eventlet.spawn(eventlet.wsgi.server, eventlet.listen(('0.0.0.0', 4000)), app)
s = eventlet.listen(('0.0.0.0', 6000))
pool = eventlet.GreenPool(5)
while True:
c, address = s.accept()
pool.spawn_n(function, c)
如果你想移动你的其他服务器,你可以这样做:
def other_server():
s = eventlet.listen(('0.0.0.0', 6000))
pool = eventlet.GreenPool(5)
while True:
c, address = s.accept()
pool.spawn_n(function, c)
if __name__ == '__main__':
eventlet.spawn(other_server)
eventlet.wsgi.server(eventlet.listen(('0.0.0.0', 4000)), app)
我正在尝试设置两个同时侦听不同端口的 eventlet 服务器。
下面代码中的第一个服务器用于 SocketIO 实现,第二个服务器用于外部连接。两者分别发挥作用,但不能同时发挥作用。
if __name__ == '__main__':
eventlet.wsgi.server(eventlet.listen(('0.0.0.0', 4000)), app)
s = eventlet.listen(('0.0.0.0', 6000))
pool = eventlet.GreenPool(5)
while True:
c, address = s.accept()
pool.spawn_n(function, c)
问题是 eventlet.wsgi.server()
函数没有 return,它运行循环来侦听和处理 Flask-SocketIO 服务器的 HTTP 请求。
您需要做的是将两台服务器中的一台移动到后台线程。例如,您可以将 Flask-SocketIO 服务器移动到后台线程,如下所示:
if __name__ == '__main__':
eventlet.spawn(eventlet.wsgi.server, eventlet.listen(('0.0.0.0', 4000)), app)
s = eventlet.listen(('0.0.0.0', 6000))
pool = eventlet.GreenPool(5)
while True:
c, address = s.accept()
pool.spawn_n(function, c)
如果你想移动你的其他服务器,你可以这样做:
def other_server():
s = eventlet.listen(('0.0.0.0', 6000))
pool = eventlet.GreenPool(5)
while True:
c, address = s.accept()
pool.spawn_n(function, c)
if __name__ == '__main__':
eventlet.spawn(other_server)
eventlet.wsgi.server(eventlet.listen(('0.0.0.0', 4000)), app)