1. ホーム
  2. python

[解決済み] [Solved] gunicorn.errors.HaltServer: <HaltServer 'Worker failed to boot'. 3> django

2022-01-25 21:46:44

質問

私はdjangoアプリを持っていて、最初にgunicornで、後にsupervisorとnginxでそれをセットアップしようとしています。

アプリは、通常のdjangoコマンドで、次のように完璧に実行されています。 python manage.py runserver

gunicornをpipでインストールすると、以下のようになります。 pip install gunicorn で、djangoのバージョンは 1.5.3

仮想環境内で以下のコマンドを実行すると、以下のようになります。

gunicorn hello.wsgi:application -b xx.xxx.xxx.xx:8000 というエラーに直面しました。

Traceback (most recent call last):
  File "/root/Envs/proj/bin/gunicorn", line 9, in <module>
    load_entry_point('gunicorn==19.0.0', 'console_scripts', 'gunicorn')()
  File "/root/Envs/proj/local/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 74, in run
    WSGIApplication("%(prog)s [OPTIONS] [APP_MODULE]").run()
  File "/root/Envs/proj/local/lib/python2.7/site-packages/gunicorn/app/base.py", line 166, in run
    super(Application, self).run()
  File "/root/Envs/proj/local/lib/python2.7/site-packages/gunicorn/app/base.py", line 71, in run
    Arbiter(self).run()
  File "/root/Envs/proj/local/lib/python2.7/site-packages/gunicorn/arbiter.py", line 169, in run
    self.manage_workers()
  File "/root/Envs/proj/local/lib/python2.7/site-packages/gunicorn/arbiter.py", line 477, in manage_workers
    self.spawn_workers()
  File "/root/Envs/proj/local/lib/python2.7/site-packages/gunicorn/arbiter.py", line 537, in spawn_workers
    time.sleep(0.1 * random.random())
  File "/root/Envs/proj/local/lib/python2.7/site-packages/gunicorn/arbiter.py", line 209, in handle_chld
    self.reap_workers()
  File "/root/Envs/proj/local/lib/python2.7/site-packages/gunicorn/arbiter.py", line 459, in reap_workers
    raise HaltServer(reason, self.WORKER_BOOT_ERROR)
gunicorn.errors.HaltServer: <HaltServer 'Worker failed to boot.' 3>

では、なぜ上記のようなエラーが発生するのか、そしてその対策は?

解決方法は?

実は、ここでの問題は wsgi ファイルそのものにありました。django 1.3 より前のバージョンでは、wsgi ファイルの名前は拡張子が .wsgi しかし、最近のバージョンでは、拡張子が .py つまり、wsgi ファイルは Python モジュールでなければなりません。

ということで、このファイルは hello_wsgi.py で、コマンドは

gunicorn  hello:application -b xx.xxx.xxx.xx:8000