繁体   English   中英

如何同时运行多个eventlet服务器?

[英]How to run multiple eventlet servers at the same time?

我试图设置两个在不同端口上同时侦听的事件服务器。

以下代码中的第一台服务器用于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()函数不会返回,它会运行循环来侦听并处理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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM