gunicorn 不能与一个以上的工人一起运行
Posted
技术标签:
【中文标题】gunicorn 不能与一个以上的工人一起运行【英文标题】:gunicorn can't run with more than one worker 【发布时间】:2017-01-17 07:22:42 【问题描述】:我有一个简单的 websocket 应用程序,例如 main.py
当我尝试使用一名工作人员启动它时,
gunicorn -w 1 -k "geventwebsocket.gunicorn.workers.GeventWebSocketWorker" main:EchoApplication
没有问题。
如果我将w
参数增加到大于1,例如-w 20
,childs开始崩溃,
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()
【问题讨论】:
你不能在同一个端口上运行 20 个应用程序,每个应用程序都需要一个唯一的端口 @iScrE4m 该死!我认为它与 apache 的 pre fork 模型具有相同的行为。 【参考方案1】:您不能使用相同的端口。我们遇到了这个问题并花了一些时间来解决。
WebSocket 绑定到一个端口,每个 gunicorn 都会尝试在同一个端口中创建 WS。
【讨论】:
以上是关于gunicorn 不能与一个以上的工人一起运行的主要内容,如果未能解决你的问题,请参考以下文章
直接将 AWS ELB 与 Gunicorn 一起使用(没有 nginx)有啥缺点?
为在Gunicorn上运行的Flask-SQLAlchemy应用选择数据库pool_size
Gunicorn - 如果客户端关闭他们的连接,如何杀死工人?