我试着在heroku上使用gevent-socketio,我已经构建了应用程序,它可以在本地使用gunicorn。但是一旦我把它推送到heroku,它就会给我服务器内部错误。我已经用heroku日志跟踪了这个错误--tail,它给出了这个错误。https://gist.github.com/3673165
我做了一些研究,并注意到对于sockeio heroku要求一些额外的setup.,我如何使用gevent-socketio来实现这一点?有没有可能设置这个?
我读到heroku不支持websockets,但支持socketio,所以我想知道这是否可能是因为gevent-socketio使用了gevent-websocket……或者我错了?
所以,如果有人成功地设置了这个,请告诉我是如何设置的?
发布于 2012-11-30 23:03:01
我不确定为什么会出现内部错误,但对于您的问题是“设置”:这是您需要传递给SocketIOServer实例的两个关键字参数。
作为一个快速技巧,您可以将sgunicorn.py复制到您的项目目录中,并修改它以传递所需的值,如下所示:
server = self.server_class(
self.socket, application=self.wsgi,
spawn=pool, handler_class=self.wsgi_handler,
resource=self.resource, policy_server=self.policy_server,
## add your stuff here
transports=['xhr-polling'], ## heroku will only support xhr-polling transport
heartbeat_interval=10, ## client will send a heartbeat every 10 seconds
heartbeat_timeout=15, ## server will expect said heartbeat every 15 seconds (give it time to arrive...)
close_timeout=60, ## if client did not re-connect in 60 seconds, it will give up
)但是,我很抱歉地说,我不认为这与您的睡眠(1.0)退出有任何关系。
发布于 2013-01-08 04:21:19
正如Nitzan所指出的,关键是将传输限制为“xhr- polling”,并设置客户端轮询持续时间和超时的时间间隔。如果你使用的是gunicorn,Nitzan的指令应该会起作用。
您还需要为客户端执行此操作。尤其是,请确保您在服务器端提供的轮询持续时间与客户端的轮询持续时间相匹配。
https://stackoverflow.com/questions/12329808
复制相似问题