Milano
Milano

Reputation: 18705

Ubuntu 16.04/Django - gunicorn - Worker failed to boot

I'm deploying Django project on Digital Ocean Ubuntu 16.04 VPS. I used one-click-install of Django and then replaced with my project.

The problem is that server returns 502 Error.

EDIT: There is no realestate_scanner.sock inside /home/django/realestate_scanner/ dir

Do you know where is the problem?

gunicorn.service

[Unit]
Description=Gunicorn daemon for Realestate Scanner
Before=nginx.service
After=network.target

[Service]
WorkingDirectory=/home/django/realestate_scanner
ExecStart=/usr/bin/gunicorn --name=realestate_scanner --pythonpath=/home/django/realestate_scanner --bind unix:/home/django/gunicorn.socket --config /etc/gunicorn.d/gunicorn.py realestate_scanner.wsgi:application
Restart=always
SyslogIdentifier=gunicorn
User=django
Group=django


[Install]
WantedBy=multi-user.target

LOGS:

> sudo journalctl -u gunicorn

returns this:

...skipping...
Jul 19 06:45:08 django-512mb-ams2-01-beta gunicorn[20681]:     self.reap_workers()
Jul 19 06:45:08 django-512mb-ams2-01-beta gunicorn[20681]:   File "/usr/lib/python2.7/dist-packages/gunicorn/arbiter.py", line 464, in reap_workers
Jul 19 06:45:08 django-512mb-ams2-01-beta gunicorn[20681]:     raise HaltServer(reason, self.WORKER_BOOT_ERROR)
Jul 19 06:45:08 django-512mb-ams2-01-beta gunicorn[20681]: gunicorn.errors.HaltServer: <HaltServer 'Worker failed to boot.' 3>
Jul 19 06:45:08 django-512mb-ams2-01-beta systemd[1]: gunicorn.service: Main process exited, code=exited, status=1/FAILURE
Jul 19 06:45:08 django-512mb-ams2-01-beta systemd[1]: gunicorn.service: Unit entered failed state.
Jul 19 06:45:08 django-512mb-ams2-01-beta systemd[1]: gunicorn.service: Failed with result 'exit-code'.
Jul 19 06:45:08 django-512mb-ams2-01-beta systemd[1]: gunicorn.service: Service hold-off time over, scheduling restart.
Jul 19 06:45:08 django-512mb-ams2-01-beta systemd[1]: Stopped Gunicorn daemon for Realestate Scanner.
Jul 19 06:45:08 django-512mb-ams2-01-beta systemd[1]: gunicorn.service: Start request repeated too quickly.
Jul 19 06:45:08 django-512mb-ams2-01-beta systemd[1]: Failed to start Gunicorn daemon for Realestate Scanner.
...skipping...
Jul 19 06:45:08 django-512mb-ams2-01-beta gunicorn[20681]:     self.reap_workers()
Jul 19 06:45:08 django-512mb-ams2-01-beta gunicorn[20681]:   File "/usr/lib/python2.7/dist-packages/gunicorn/arbiter.py", line 464, in reap_workers
Jul 19 06:45:08 django-512mb-ams2-01-beta gunicorn[20681]:     raise HaltServer(reason, self.WORKER_BOOT_ERROR)
Jul 19 06:45:08 django-512mb-ams2-01-beta gunicorn[20681]: gunicorn.errors.HaltServer: <HaltServer 'Worker failed to boot.' 3>
Jul 19 06:45:08 django-512mb-ams2-01-beta systemd[1]: gunicorn.service: Main process exited, code=exited, status=1/FAILURE
Jul 19 06:45:08 django-512mb-ams2-01-beta systemd[1]: gunicorn.service: Unit entered failed state.
Jul 19 06:45:08 django-512mb-ams2-01-beta systemd[1]: gunicorn.service: Failed with result 'exit-code'.
Jul 19 06:45:08 django-512mb-ams2-01-beta systemd[1]: gunicorn.service: Service hold-off time over, scheduling restart.
Jul 19 06:45:08 django-512mb-ams2-01-beta systemd[1]: Stopped Gunicorn daemon for Realestate Scanner.
Jul 19 06:45:08 django-512mb-ams2-01-beta systemd[1]: gunicorn.service: Start request repeated too quickly.
Jul 19 06:45:08 django-512mb-ams2-01-beta systemd[1]: Failed to start Gunicorn daemon for Realestate Scanner.

and

> sudo systemctl status gunicorn

returns this:

root@django-512mb-ams2-01-beta:/home/django/realestate_scanner# sudo systemctl status gunicorn
● gunicorn.service - Gunicorn daemon for Realestate Scanner
   Loaded: loaded (/etc/systemd/system/gunicorn.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2017-07-19 06:36:04 UTC; 4ms ago
 Main PID: 20517 ((gunicorn))
    Tasks: 0
   Memory: 0B
      CPU: 0
   CGroup: /system.slice/gunicorn.service
           └─20517 (gunicorn)

Jul 19 06:36:04 django-512mb-ams2-01-beta systemd[1]: Started Gunicorn daemon for Realestate Scanner.
root@django-512mb-ams2-01-beta:/home/django/realestate_scanner# sudo journalctl -u gunicorn
-- Logs begin at Tue 2017-07-18 20:09:42 UTC, end at Wed 2017-07-19 06:36:50 UTC. --
Jul 18 20:10:00 django-512mb-ams2-01-beta systemd[1]: Started Gunicorn daemon for Django Project.
Jul 18 20:10:00 django-512mb-ams2-01-beta gunicorn[2093]: [2017-07-18 20:10:00 +0000] [2093] [INFO] Starting gunicorn 19.4.5
Jul 18 20:10:00 django-512mb-ams2-01-beta gunicorn[2093]: [2017-07-18 20:10:00 +0000] [2093] [INFO] Listening at: unix:/home/django/gunicorn.socket (2093)
Jul 18 20:10:00 django-512mb-ams2-01-beta gunicorn[2093]: [2017-07-18 20:10:00 +0000] [2093] [INFO] Using worker: gevent
Jul 18 20:10:00 django-512mb-ams2-01-beta gunicorn[2093]: [2017-07-18 20:10:00 +0000] [2101] [INFO] Booting worker with pid: 2101
Jul 18 20:10:00 django-512mb-ams2-01-beta gunicorn[2093]: [2017-07-18 20:10:00 +0000] [2102] [INFO] Booting worker with pid: 2102
Jul 18 20:10:00 django-512mb-ams2-01-beta gunicorn[2093]: [2017-07-18 20:10:00 +0000] [2105] [INFO] Booting worker with pid: 2105
Jul 18 20:10:49 django-512mb-ams2-01-beta gunicorn[2093]: [2017-07-18 20:10:49 +0000] [2105] [ERROR] Error handling request /
Jul 18 20:10:49 django-512mb-ams2-01-beta gunicorn[2093]: Traceback (most recent call last):
Jul 18 20:10:49 django-512mb-ams2-01-beta gunicorn[2093]:   File "/usr/lib/python2.7/dist-packages/gunicorn/workers/async.py", line 52, in handle
Jul 18 20:10:49 django-512mb-ams2-01-beta gunicorn[2093]:     self.handle_request(listener_name, req, client, addr)
Jul 18 20:10:49 django-512mb-ams2-01-beta gunicorn[2093]:   File "/usr/lib/python2.7/dist-packages/gunicorn/workers/ggevent.py", line 163, in handle_request
Jul 18 20:10:49 django-512mb-ams2-01-beta gunicorn[2093]:     super(GeventWorker, self).handle_request(*args)
Jul 18 20:10:49 django-512mb-ams2-01-beta gunicorn[2093]:   File "/usr/lib/python2.7/dist-packages/gunicorn/workers/async.py", line 105, in handle_request
Jul 18 20:10:49 django-512mb-ams2-01-beta gunicorn[2093]:     respiter = self.wsgi(environ, resp.start_response)
Jul 18 20:10:49 django-512mb-ams2-01-beta gunicorn[2093]:   File "/usr/lib/python2.7/dist-packages/django/core/handlers/wsgi.py", line 189, in __call__
Jul 18 20:10:49 django-512mb-ams2-01-beta gunicorn[2093]:     response = self.get_response(request)
Jul 18 20:10:49 django-512mb-ams2-01-beta gunicorn[2093]:   File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py", line 207, in get_response
Jul 18 20:10:49 django-512mb-ams2-01-beta gunicorn[2093]:     return debug.technical_500_response(request, *sys.exc_info(), status_code=400)
Jul 18 20:10:49 django-512mb-ams2-01-beta gunicorn[2093]:   File "/usr/lib/python2.7/dist-packages/django/views/debug.py", line 97, in technical_500_response
Jul 18 20:10:49 django-512mb-ams2-01-beta gunicorn[2093]:     html = reporter.get_traceback_html()
Jul 18 20:10:49 django-512mb-ams2-01-beta gunicorn[2093]:   File "/usr/lib/python2.7/dist-packages/django/views/debug.py", line 384, in get_traceback_html
Jul 18 20:10:49 django-512mb-ams2-01-beta gunicorn[2093]:     return t.render(c)
Jul 18 20:10:49 django-512mb-ams2-01-beta gunicorn[2093]:   File "/usr/lib/python2.7/dist-packages/django/template/base.py", line 210, in render
Jul 18 20:10:49 django-512mb-ams2-01-beta gunicorn[2093]:     return self._render(context)
Jul 18 20:10:49 django-512mb-ams2-01-beta gunicorn[2093]:   File "/usr/lib/python2.7/dist-packages/django/template/base.py", line 202, in _render
Jul 18 20:10:49 django-512mb-ams2-01-beta gunicorn[2093]:     return self.nodelist.render(context)
Jul 18 20:10:49 django-512mb-ams2-01-beta gunicorn[2093]:   File "/usr/lib/python2.7/dist-packages/django/template/base.py", line 905, in render
Jul 18 20:10:49 django-512mb-ams2-01-beta gunicorn[2093]:     bit = self.render_node(node, context)
...skipping...
Jul 19 06:36:06 django-512mb-ams2-01-beta gunicorn[20517]:     self.stop()
Jul 19 06:36:06 django-512mb-ams2-01-beta gunicorn[20517]:   File "/usr/lib/python2.7/dist-packages/gunicorn/arbiter.py", line 347, in stop
Jul 19 06:36:06 django-512mb-ams2-01-beta gunicorn[20517]:     time.sleep(0.1)
Jul 19 06:36:06 django-512mb-ams2-01-beta gunicorn[20517]:   File "/usr/lib/python2.7/dist-packages/gunicorn/arbiter.py", line 219, in handle_chld
Jul 19 06:36:06 django-512mb-ams2-01-beta gunicorn[20517]:     self.reap_workers()
Jul 19 06:36:06 django-512mb-ams2-01-beta gunicorn[20517]:   File "/usr/lib/python2.7/dist-packages/gunicorn/arbiter.py", line 464, in reap_workers
Jul 19 06:36:06 django-512mb-ams2-01-beta gunicorn[20517]:     raise HaltServer(reason, self.WORKER_BOOT_ERROR)
Jul 19 06:36:06 django-512mb-ams2-01-beta gunicorn[20517]: gunicorn.errors.HaltServer: <HaltServer 'Worker failed to boot.' 3>
Jul 19 06:36:06 django-512mb-ams2-01-beta systemd[1]: gunicorn.service: Main process exited, code=exited, status=1/FAILURE
Jul 19 06:36:06 django-512mb-ams2-01-beta systemd[1]: gunicorn.service: Unit entered failed state.
Jul 19 06:36:06 django-512mb-ams2-01-beta systemd[1]: gunicorn.service: Failed with result 'exit-code'.

Upvotes: 2

Views: 6313

Answers (2)

Paulo Vin&#237;cius
Paulo Vin&#237;cius

Reputation: 346

I know this question didn't have answers for a while and probaly is solved, but this can help someone. First try:

gunicorn --log-file=- (your_project_name).wsgi:application

You'll see a log with others parameters from loading boot of gunicorn. In my case, a package was missing, i installed that package and type the foward commands:

sudo systemctl daemon-reload sudo systemctl restart gunicorn sudo systemctl enable gunicorn

Problem solved. I hope this answer can help.

Upvotes: 9

mb_atx
mb_atx

Reputation: 319

I had a similar error, turned out to be a syntax error introduced in my Django code.

So, it is always a good idea to try running Django standalone

python manage.py runserver

when you suddenly have a Gunicorn "Worker failed to boot" error

Upvotes: 3

Related Questions