Eu tenho um problema estranho com minha configuração virtualenv + gunicorn, apenas quando o gunicorn é lançado via supervisord. Eu sei que pode muito bem ser um problema com meu orientador e gostaria de receber qualquer feedback sobre um lugar melhor para pedir ajuda ...
Resumindo: quando eu uso o gunicorn do shell do meu usuário, dentro do meu virtualenv, tudo está funcionando perfeitamente. Consigo acessar todas as visualizações do meu projeto Django.
Quando o gunicorn é iniciado pelo supervisord na inicialização do sistema, tudo está OK.
Mas, se eu tiver que matar os processos do gunicorn_django, ou se eu executar uma reinicialização do supervisord, uma vez que o gunicorn_django tenha relançado, cada requisição será respondida com um estranho Traceback:
(...)
File "/home/hc/prod/venv/lib/python2.6/site-packages/Django-1.2.5-py2.6.egg/django/db/__init__.py", line 77, in
connection = connections[DEFAULT_DB_ALIAS]
File "/home/hc/prod/venv/lib/python2.6/site-packages/Django-1.2.5-py2.6.egg/django/db/utils.py", line 92, in __getitem__
backend = load_backend(db['ENGINE'])
File "/home/hc/prod/venv/lib/python2.6/site-packages/Django-1.2.5-py2.6.egg/django/db/utils.py", line 50, in load_backend
raise ImproperlyConfigured(error_msg)
TemplateSyntaxError: Caught ImproperlyConfigured while rendering: 'django.db.backends.postgresql_psycopg2' isn't an available database backend.
Try using django.db.backends.XXX, where XXX is one of:
'dummy', 'mysql', 'oracle', 'postgresql', 'postgresql_psycopg2', 'sqlite3'
Error was: cannot import name utils
Pilha completa disponível aqui: link
Estou correndo ...
- Ubuntu / maverick (atualizado)
- Python = 2.6.6
- virtualenv = 1.5.1
- gunicorn = 0.12.0
- Django = 1.2.5
- psycopg2 = '2.4-beta2 (dt dec pq3 ext)'
configuração do gunicorn:
backlog = 2048
bind = "127.0.0.1:8000"
pidfile = "/tmp/gunicorn-hc.pid"
daemon = True
debug = True
workers = 3
logfile = "/home/hc/prod/log/gunicorn.log"
loglevel = "info"
configuração do supervisord:
[program:gunicorn]
directory=/home/hc/prod/hc
command=/home/hc/prod/venv/bin/gunicorn_django -c /home/hc/prod/hc/gunicorn.conf.py
user=hc
umask=022
autostart=True
autorestart=True
redirect_stderr=True
Algum conselho? Eu tenho sido preso por um bom tempo.
Parece um limite de memória estranho, já que não estou impondo nada de especial:
$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 20
file size (blocks, -f) unlimited
pending signals (-i) 16382
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) unlimited
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited