簡體   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