2

私はherokuでgevent-socketioを使用しようとしています.アプリケーションを構築しました.gunicornでローカルに動作します. しかし、それをherokuにプッシュすると、サーバーの内部エラーが発生します。heroku logs --tail でエラーを追跡したところ、このエラーが発生しました。https://gist.github.com/3673165

私はいくつかの調査を行い、sockeio heroku には追加のセットアップが必要であることに気付きました。 gevent-socketio でこれを行うにはどうすればよいですか? これをセットアップすることさえ可能ですか?

heroku は websockets をサポートしていないが、socketio をサポートしていると読んだことがあります。

誰かがこれをセットアップできたら、どうやって教えてください。

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 に答える