Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Django Webfaction 'Timeout when reading response headers from daemon process'

My Django app on my production server hosted on Webfaction was working fine until I just tried to restart it after pushing a change to the settings.py file. I ran

apache2/bin/restart

as usual. Then I tried to access my app on my browser, and I got a 504 Gateway timeout. I looked into the mod_wsgi logs and saw this:

[Thu Nov 03 23:46:53.605625 2016] [wsgi:error] [pid 8027:tid 139641332168448]
[client 127.0.0.1:34570] Timeout when reading response headers from daemon 
process 'myapp' : /home/<me>/webapps/<myapp>/<ProjectName>/<myapp>/wsgi.py

What does this mean and how do I fix it? The only thing I changed in the settings.py file was moving some variable names around. I can still successfully interact with the app with

python2.7 manage.py shell

But I can't get to it on the web, nor use the API.

EDIT: Here's my wsgi.py file:

import os

from django.core.wsgi import get_wsgi_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "<myapp>.settings")

application = get_wsgi_application()
like image 847
Nick Avatar asked Nov 03 '16 23:11

Nick


3 Answers

Python C extension modules, like numpy, are known to cause timeouts when used under mod_wsgi. There's a clear explanation of the problem (direct from the author of mod_wsgi) available at https://serverfault.com/a/514251/109598

If that sounds like it might be the cause of your problem, then the solution is probably simple - add the following to your httpd.conf:

WSGIApplicationGroup %{GLOBAL}

Be sure to restart your Apache instance after making that change.

like image 69
Sean F Avatar answered Oct 13 '22 22:10

Sean F


Try increasing Timeout directive in httpd.conf, which defaults to 60 seconds in Apache 2.4. For example:

TimeOut 600
like image 6
tuomastik Avatar answered Oct 13 '22 23:10

tuomastik


Here is how I was able to find the root cause of my issue.

python manage.py showmigrations

My app could not reach the database server, so it would eventually time out. Running manage.py I could see see the error message on the console.

like image 6
Marston Avatar answered Oct 13 '22 23:10

Marston