gunicorn.errors.HaltServer: django

前端 未结 6 816
盖世英雄少女心
盖世英雄少女心 2020-12-05 01:18

I have a django app and trying to set it up with gunicorn first and later with supervisor and nginx.

The app is running with the normal django command perfectly like

相关标签:
6条回答
  • 2020-12-05 02:00

    I also had a similar error in Ubuntu 16.04, Django 1.11, using systemd.

    My problem was that I had split my settings out into separate files; ie: instead of having all settings in project/settings.py, I have a few settings files like project/settings/dev.py.

    I had to update DJANGO_SETTINGS_MODULE in the project/wsgi.py file from:

    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project.settings")  
    

    to

    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project.settings.dev")
    

    then gunicorn worked.

    0 讨论(0)
  • 2020-12-05 02:01

    Actually the problem here was the wsgi file itself, previously before django 1.3 the wsgi file was named with an extension of .wsgi, but now in the recent versions it will be created with and extension of .py that is the wsgi file must be a python module

    so the file should be hello_wsgi.py and command should be

    gunicorn  hello:application -b xx.xxx.xxx.xx:8000
    
    0 讨论(0)
  • 2020-12-05 02:05

    You don't showed a full output. It's probably looks like

    $ gunicorn elcarweb.wsgi
    [2015-10-27 21:01:47 +0000] [5429] [INFO] Starting gunicorn 19.2.1
    [2015-10-27 21:01:47 +0000] [5429] [INFO] Listening at: http://127.0.0.1:8000 (5429)
    [2015-10-27 21:01:47 +0000] [5429] [INFO] Using worker: sync
    [2015-10-27 21:01:47 +0000] [5434] [INFO] Booting worker with pid: 5434
    [2015-10-27 21:01:47 +0000] [5434] [ERROR] Exception in worker process:
    Traceback (most recent call last):
      File "/home/tomek/Elcar/elcarweb/env/lib/python2.7/site-packages/gunicorn/arbiter.py", line 503, in spawn_worker
        worker.init_process()
      File "/home/tomek/Elcar/elcarweb/env/lib/python2.7/site-packages/gunicorn/workers/base.py", line 116, in init_process
        self.wsgi = self.app.wsgi()
      File "/home/tomek/Elcar/elcarweb/env/lib/python2.7/site-packages/gunicorn/app/base.py", line 67, in wsgi
        self.callable = self.load()
      File "/home/tomek/Elcar/elcarweb/env/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 65, in load
        return self.load_wsgiapp()
      File "/home/tomek/Elcar/elcarweb/env/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp
        return util.import_app(self.app_uri)
      File "/home/tomek/Elcar/elcarweb/env/lib/python2.7/site-packages/gunicorn/util.py", line 355, in import_app
        __import__(module)
    ImportError: No module named elcarweb.wsgi
    Traceback (most recent call last):
      File "/home/tomek/Elcar/elcarweb/env/lib/python2.7/site-packages/gunicorn/arbiter.py", line 503, in spawn_worker
        worker.init_process()
      File "/home/tomek/Elcar/elcarweb/env/lib/python2.7/site-packages/gunicorn/workers/base.py", line 116, in init_process
        self.wsgi = self.app.wsgi()
      File "/home/tomek/Elcar/elcarweb/env/lib/python2.7/site-packages/gunicorn/app/base.py", line 67, in wsgi
        self.callable = self.load()
      File "/home/tomek/Elcar/elcarweb/env/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 65, in load
        return self.load_wsgiapp()
      File "/home/tomek/Elcar/elcarweb/env/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp
        return util.import_app(self.app_uri)
      File "/home/tomek/Elcar/elcarweb/env/lib/python2.7/site-packages/gunicorn/util.py", line 355, in import_app
        __import__(module)
    ImportError: No module named elcarweb.wsgi
    [2015-10-27 21:01:47 +0000] [5434] [INFO] Worker exiting (pid: 5434)
    Traceback (most recent call last):
      File "/home/tomek/Elcar/elcarweb/env/bin/gunicorn", line 11, in <module>
        sys.exit(run())
      File "/home/tomek/Elcar/elcarweb/env/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 74, in run
        WSGIApplication("%(prog)s [OPTIONS] [APP_MODULE]").run()
      File "/home/tomek/Elcar/elcarweb/env/lib/python2.7/site-packages/gunicorn/app/base.py", line 189, in run
        super(Application, self).run()
      File "/home/tomek/Elcar/elcarweb/env/lib/python2.7/site-packages/gunicorn/app/base.py", line 72, in run
        Arbiter(self).run()
      File "/home/tomek/Elcar/elcarweb/env/lib/python2.7/site-packages/gunicorn/arbiter.py", line 170, in run
        self.manage_workers()
      File "/home/tomek/Elcar/elcarweb/env/lib/python2.7/site-packages/gunicorn/arbiter.py", line 473, in manage_workers
        self.spawn_workers()
      File "/home/tomek/Elcar/elcarweb/env/lib/python2.7/site-packages/gunicorn/arbiter.py", line 537, in spawn_workers
        time.sleep(0.1 * random.random())
      File "/home/tomek/Elcar/elcarweb/env/lib/python2.7/site-packages/gunicorn/arbiter.py", line 210, in handle_chld
        self.reap_workers()
      File "/home/tomek/Elcar/elcarweb/env/lib/python2.7/site-packages/gunicorn/arbiter.py", line 455, in reap_workers
        raise HaltServer(reason, self.WORKER_BOOT_ERROR)
    gunicorn.errors.HaltServer: <HaltServer 'Worker failed to boot.' 3>
    

    Last trackback is almost the same, but before You see required informations:

    ImportError: No module named elcarweb.wsgi
    

    If You see this error, then solution is run gunicorn with --chdir=/your/app/dir parameter.

    0 讨论(0)
  • 2020-12-05 02:06

    run guncorn with --preload can see the error log, like this

    gunicorn app:application --preload -b 0.0.0.0:5000 
    

    This will usually give you a more detailed error message.

    0 讨论(0)
  • 2020-12-05 02:10

    For anyone facing the same issue, the problem is usually something in django itself. Activate your venv and run ./manage.py runserver

    This will usually give you a more detailed error message.

    0 讨论(0)
  • 2020-12-05 02:18

    I got the very same error. Gunicorn was working when executed as root, but failed this way when executed as non-privileged user. In my case I install the 'dataset' python module with 'pip install dataset' and it screwed the permissions on /usr/lib/python2.7/site-packages/dataset to be readable only by root account. On other module installed as dependency like that was normality.

    Fix :

    chmod -R a+rX /usr/lib/python2.7/site-packages/dataset*
    chmod -R a+rX /usr/lib/python2.7/site-packages/normality*
    

    Some another issue was with the yaml package auto-installed by pip, but I have not found what exactly. The fix was to reinstall from fedora package:

    dnf -y install python-yaml
    
    0 讨论(0)
提交回复
热议问题