首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gevent-socketio on heroku

Gevent-socketio on heroku
EN

Stack Overflow用户
提问于 2012-09-08 18:07:23
回答 2查看 849关注 0票数 2

我试着在heroku上使用gevent-socketio,我已经构建了应用程序,它可以在本地使用gunicorn。但是一旦我把它推送到heroku,它就会给我服务器内部错误。我已经用heroku日志跟踪了这个错误--tail,它给出了这个错误。https://gist.github.com/3673165

我做了一些研究,并注意到对于sockeio heroku要求一些额外的setup.,我如何使用gevent-socketio来实现这一点?有没有可能设置这个?

我读到heroku不支持websockets,但支持socketio,所以我想知道这是否可能是因为gevent-socketio使用了gevent-websocket……或者我错了?

所以,如果有人成功地设置了这个,请告诉我是如何设置的?

EN

回答 2

Stack Overflow用户

发布于 2012-11-30 23:03:01

我不确定为什么会出现内部错误,但对于您的问题是“设置”:这是您需要传递给SocketIOServer实例的两个关键字参数。

作为一个快速技巧,您可以将sgunicorn.py复制到您的项目目录中,并修改它以传递所需的值,如下所示:

代码语言:javascript
复制
    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)退出有任何关系。

票数 0
EN

Stack Overflow用户

发布于 2013-01-08 04:21:19

正如Nitzan所指出的,关键是将传输限制为“xhr- polling”,并设置客户端轮询持续时间和超时的时间间隔。如果你使用的是gunicorn,Nitzan的指令应该会起作用。

您还需要为客户端执行此操作。尤其是,请确保您在服务器端提供的轮询持续时间与客户端的轮询持续时间相匹配。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12329808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档