Только недавно попробовал небольшой тестовый проект развернуть (сам в Python&Django пока двухмесячный опыт только имею). В итоге всё получилось, запустил uwsgi в так называемом "Emperor mode". Используется virtual environment. Устанавливается uwsgi (pip install) в систему, кстати, а не в venv.
Создается файл /etc/init/uwsgi.conf с содержимым:
# Emperor uWSGI script
description "uWSGI Emperor"
start on runlevel [2345]
stop on runlevel [06]
exec uwsgi --master --die-on-term --emperor /etc/uwsgi/vassals
В папку /etc/uwsgi/vassals помещаются конфиги проектов (по одному на каждый проект), с примерно таким содержимым:
# mysite_uwsgi.ini file
[uwsgi]
## process-related settings
# master
master = true
# maximum number of worker processes
processes = 3
# the socket (use the full path to be safe
socket = /home/user/virtualenvs/mysite/uwsgi.sock
# ... with appropriate permissions - may be needed
chmod-socket = 666
# clear environment on exit
vacuum = true
# user, group
uid=mysiteuser
gid=mysitegroup
## Django-related settings
# the virtualenv (full path)
home = /home/user/virtualenvs/mysite/
# the base directory (full path)
chdir = /home/user/virtualenvs/mysite/www
# Django's wsgi file
module = mysite.wsgi
Теперь uswgi управляется как сервис: sudo service uwsgi (start|status|stop|restart и т.п.) и никаких занятых консолей.
Насчет автоперезагрузки при изменении содержимого: пока не пробовал, но думаю
вот оно