[英]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.