Странности WSGI с PYthon/Django: чередование старых и новых версий приложения

Я никогда не вникал в то, как на самом деле работают серверные технологии, такие как WSGI, и думал, что до сих пор у меня было базовое понимание...

Каково объяснение такого типа поведения?: при установке Apache2/WSGI/Django, после получения нового кода на сервере разработки и его «перезагрузки» с помощью предписанного touch myapp.wsgi, все начало становиться странным. . При последовательных обновлениях браузера я получаю либо старую версию приложения (до того, как ввел новый код), либо новую, СЛУЧАЙНО! Как будто некоторые потоки/процессы все еще обслуживают старый код, в то время как некоторые загрузили новый код с диска... Какое простое объяснение этому может быть и как я могу правильно «перезагрузить» свое приложение без перезапуска apache? Или где я могу найти простое (а еще лучше, графическое/схематическое) объяснение того, как работают такие вещи, как WSGI, FCGI и т. д.

Примечание: Я не разбираюсь в devops, но мне пришлось столкнуться с подобными вещами, и я ищу любые «сжатые», «ускоренные курсы» знаний по этому вопросу, а не полную документацию. для всех компонентов...


person NeuronQ    schedule 01.11.2012    source источник
comment
Вопрос, вероятно, относится сюда serverfault.com   -  person rantanplan    schedule 01.11.2012
comment
@rantanplan думаю, вы правы ... есть ли какие-либо функции перемещения на SO или мне следует скопировать и вставить их туда?   -  person NeuronQ    schedule 01.11.2012
comment
Поскольку я никогда не задавал вопрос, я не знаю, есть ли у вас такая возможность. Но наверняка человек с достаточной репутацией примет меры, когда увидит эти комментарии. Я просто пометил это как не относящееся к теме SO и что оно относится к ошибке сервера.   -  person rantanplan    schedule 01.11.2012


Ответы (1)


Вероятно, вы не используете режим демона. Читать:

Документация Django по настройке mod_wsgi недостаточно ясно описывает, что вам нужно сделать, чтобы использовать режим демона. Теперь это исправлено.

person Graham Dumpleton    schedule 01.11.2012
comment
БОЛЬШОЕ СПАСИБО! Их действительно следует поставить. Если вы используете встроенный режим и вам нужно обновить код для вашего веб-приложения Python, у вас нет другого выбора, кроме как перезапустить весь Apache. При использовании режима демона вы можете избежать перезапуска всего Apache и вместо этого можете просто коснуться файла сценария WSGI, чтобы обновить дату его модификации. в ярко-оранжевом поле на странице развертывания Django... Я только что понял, что в 2 проектах, где инструкции по перезагрузке, данные системным администратором, касались app.wsgi, mod_wsgi использовал встроенный режим... - person NeuronQ; 02.11.2012
comment
... что приводит к некоторым странным ошибкам, когда более новая версия, если приложение на стороне клиента общается со старой версией API (вероятно, работает в разных процессах Apache) ... теперь мне просто нужно загрузить дробовик и найти эти 2 парня занимаются системным администрированием... - person NeuronQ; 02.11.2012