(Dos comentários postados para a pergunta, eu devo chamar especialmente aquele por skarap , uma vez que me ajudou a encontrar uma solução por conta própria, fazendo com que o gunicorn produzisse erros corretamente. Eu gostaria de poder conceder uma recompensa parcial por isso; a conversão desse comentário em uma resposta ainda não seria uma resposta completa, mas ajudou substancialmente.)
Acontece que esta foi a linha problemática no arquivo de configuração:
worker_class = 'egg:gunicorn#sync'
Isso causou esse erro:
Error: class uri 'egg:gunicorn#sync' invalid or not found:
[Traceback (most recent call last):
File "/home/django/.venv/lib/python2.7/site-packages/gunicorn/util.py", line 113, in load_class
return pkg_resources.load_entry_point(dist, section, name)
File "/home/django/.venv/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/pkg_resources.py", line 318, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/home/django/.venv/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/pkg_resources.py", line 2220, in load_entry_point
raise ImportError("Entry point %r not found" % ((group,name),))
ImportError: Entry point ('gunicorn.workers', 'sync') not found
]
A substituição por worker_class = 'sync'
corrigiu o ImportError e, portanto, o problema. Nenhuma outra alteração de configuração foi necessária no 18.0 - > 19.2.1 atualização.
Parece haver um problema com a documentação do gunicorn, que eu pretendo relatar, porque no momento em que escrevo isso, os documentos para v19.2.1 ainda afirmam que a sintaxe egg:gunicorn#[worker]
é válida. (O exemplo lá usa gevent, mas parece que deveria se aplicar a outros tipos). Quem sabe, pode ser válido em algumas circunstâncias, mas no meu (gunicorn em um virtualenv, instalado com pip), não é.