2

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

我做了一些研究,发现对于 sockeio heroku 需要一些额外的设置。 如何使用 gevent-socketio 执行此操作?甚至可以设置这个吗?

我读过heroku不支持websockets但支持socketio,所以我想知道是否可能导致gevent-socketio使用gevent-websocket ...还是我错了?

所以请如果有人设法设置这个,请告诉我如何?

4

2 回答 2

0

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

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

于 2013-01-07T20:21:19.323 回答
0

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

作为一个快速破解,您可以将 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
    )

但是,我很遗憾地说我认为这与您的 sleep(1.0) 退出没有任何关系。

于 2012-11-30T15:03:01.080 回答