gunicorn不能与多名工人合作

时间:2016-09-09 07:53:29

标签: python gunicorn gevent

我有一个简单的websocket应用程序,例如main.py

当我尝试使用一名工作人员启动它时,

gunicorn -w 1 -k "geventwebsocket.gunicorn.workers.GeventWebSocketWorker" main:EchoApplication

没问题。

如果我将w参数增加到1以上,例如-w 20,则孩子会开始崩溃,

error: [Errno 48] Address already in use: ('127.0.0.1', 8100)

有什么想法吗?附加源代码

from geventwebsocket import WebSocketServer, WebSocketApplication, Resource
import time

class EchoApplication(WebSocketApplication):
    def on_open(self):
        print "Connection opened"

    def on_message(self, message):
        self.ws.send('Let me take a sleep')
        time.sleep(10)
        self.ws.send(message)

    def on_close(self, reason):
        print reason

WebSocketServer(
    ('127.0.0.1', 8100),
    Resource({'/': EchoApplication})
).serve_forever()

1 个答案:

答案 0 :(得分:1)

您不能使用相同的端口。我们遇到了这个问题,花了一些时间才弄明白。

WebSocket 绑定到一个端口,每个 gunicorn 都会尝试在同一个端口中创建 WS。