4

gunicornを使用してDjangoアプリケーションを実行する必要があります。私はドキュメントを読んで、私は私がすべきようにすべてを設定したと思いますが、私が実行すると

gunicorn --worker-class socketio.sgunicorn.GeventSocketIOWorker app.wsgi:application

次のエラーメッセージが表示されます

2013-02-01 18:25:17 [25394] [INFO] Booting worker with pid: 25394
2013-02-01 18:25:18 [25394] [ERROR] Exception in worker process:
Traceback (most recent call last):
  File ".../app-root/data/lib/python2.7/site-packages/gunicorn/arbiter.py", line 485, in spawn_worker
    worker.init_process()
  File ".../app-root/data/lib/python2.7/site-packages/gunicorn/workers/ggevent.py", line 131, in init_process
    super(GeventWorker, self).init_process()
  File ".../app-root/data/lib/python2.7/site-packages/gunicorn/workers/base.py", line 104, in init_process
    self.run()
  File ".../app-root/data/lib/python2.7/site-packages/socketio/sgunicorn.py", line 14, in run
    self.socket.setblocking(1)
AttributeError: 'GeventSocketIOWorker' object has no attribute 'socket'
Traceback (most recent call last):
  File ".../app-root/data/lib/python2.7/site-packages/gunicorn/arbiter.py", line 485, in spawn_worker
    worker.init_process()
  File ".../data/lib/python2.7/site-packages/gunicorn/workers/ggevent.py", line 131, in init_process
    super(GeventWorker, self).init_process()
  File ".../app-root/data/lib/python2.7/site-packages/gunicorn/workers/base.py", line 104, in init_process
    self.run()
  File ".../app-root/data/lib/python2.7/site-packages/socketio/sgunicorn.py", line 14, in run
    self.socket.setblocking(1)
AttributeError: 'GeventSocketIOWorker' object has no attribute 'socket'
2013-02-01 18:25:18 [25394] [INFO] Worker exiting (pid: 25394)

django_socketioで実行すると、すべてが正常に機能します。本当に重要なことを見逃す必要があります。

ご協力ありがとうございました

4

3 に答える 3

9

gunicorn> 0.17の問題のようです。問題#122を参照してください。私にとっては、バージョン0.16.1のgunicornで動作しています。

pip install gunicorn==0.16.1
于 2013-02-03T10:08:25.727 に答える
0

gevent-socketio 0.3.6をインストールすると、場合によってはgunicornを元に戻さなくてもこれを修正できる可能性があります。私は0.3.5-rc2を持っていて、アップグレードするとこの問題が修正されました(注:これはdjangoにはありませんでしたが、機能しました)。

pip install gevent-socketio==0.3.6

于 2015-04-06T21:55:39.180 に答える
0

このgunicornの変更が原因です。 https://github.com/benoitc/gunicorn/commit/9a83d719b23fe28667a9c76bac25ba66651f8ccf

以前はgeventワーカーに使用されていたソケットはgunicornソケットからのものでしたが、現在はgevent協調ソケットをラップしています。したがって、古いバージョンのgunicornに戻すことはお勧めできません。このチェックを無効にするFlashポリシーサーバーを無効にすることができます。

于 2015-05-22T19:07:09.493 に答える