Lighttpd, FastCGI, Django - как перезагрузить автоматически? - PullRequest
0 голосов
/ 12 сентября 2009

Я использую Lighttpd + FastCGI + Django на компьютере разработчика. Я запускаю сервер FastCGI с помощью параметра командной строки manage.py.

Проблема в том, что я часто делаю изменения в источниках, и мне нужно, чтобы FastCGI автоматически принимал эти изменения, как это делает "./manage.py runserver".

Есть ли опция командной строки для этого, возможно, или каких-либо других решений?

Ответы [ 2 ]

2 голосов
/ 12 сентября 2009

Вы смотрели код в части runserver файла manage.py, который осуществляет мониторинг? Я не вижу причин, по которым вы не могли бы просто скопировать этот код в пользовательский сценарий manage.py и настроить его на запуск команды lighty restart при обнаружении изменений.

В качестве альтернативы, вы можете запустить отдельную программу на Python, которая перезапустится, используя пакет, такой как pyinotify:

http://trac.dbzteam.org/pyinotify

0 голосов
/ 15 декабря 2010

Мне интересно, кто-нибудь когда-нибудь заставлял это работать? Я попытался реализовать механизм перезагрузки с помощью django autoreload.py, к сожалению, я получаю ошибки, когда происходит форк:

django / core / servers / fastcgi.py ", строка 180, в runfastcgi WSGIServer (WSGIHandler (), ** wsgi_opts) .run () Файл "build / bdist.freebsd-6.4-RELEASE-p9-amd64 / egg / flup / server / fcgi_fork.py", строка 140, в работе Файл "build / bdist.freebsd-6.4-RELEASE-p9-amd64 / egg / flup / server / preforkserver.py", строка 119, в работе Файл "build / bdist.freebsd-6.4-RELEASE-p9-amd64 / egg / flup / server / preforkserver.py", строка 450, в _installSignalHandlers ValueError: сигнал работает только в основном потоке

Моей идеальной настройкой было бы иметь возможность перезагрузить / убить мой процесс fcgi и запускать новый после каждого изменения кода, аналогично тому, как django делает это со своим внутренним сервером. Я также попытался удалить поток из autoreload.py, который мог бы обойти эту ошибку, но он, похоже, не запускает сервер должным образом (все еще исследует это).

Возможно, кто-то пробовал CherryPies autoreload.py в файле settings.py для django?

...