mod_wsgi продължава да рестартира приложението за колба

От документацията на Flask имам следното в моята конфигурация:

<VirtualHost *>
    ServerName example.com

    WSGIDaemonProcess yourapplication user=user1 group=group1 threads=5
    WSGIScriptAlias / /var/www/yourapplication/yourapplication.wsgi

    <Directory /var/www/yourapplication>
        WSGIProcessGroup yourapplication
        WSGIApplicationGroup %{GLOBAL}
        Order deny,allow
        Allow from all
    </Directory>
</VirtualHost>

В моя .wsgi файл импортирам правилния файл на python и импортирам приложението flask като приложение. Всичко работи добре, но добавих регистриране към този файл, защото подозирах, че нещо не е наред. Очевидно този wsgi файл се извиква толкова често, когато браузър прави връзка. Рестартира приложението (или поне нов процес). Никога не съм забелязвал това, нито съм го виждал като проблем, докато не импортирах flask-login за управление на удостоверени сесии. Сега, когато вляза, след известно време приложението wsgi се презарежда и историята на сесиите вече не съществува. Всъщност трябва да влизам на всеки няколко секунди. Това ли е планираният начин, по който mod_wsgi работи? Тествах приложението си за колба, работещо в самостоятелен режим (собствен сървър за разработка на колбата) и работи безупречно.

В известен смисъл това е дубликат, но също така не е. Кодът на сървъра не е с грешки. Просто mod_wsgi рестартира приложението отново и отново. Все пак благодаря за връзката към другата публикация!


person Jimmy    schedule 29.01.2018    source източник
comment
В известен смисъл това е дубликат, но също така не е. Кодът на сървъра не е с грешки. Просто mod_wsgi рестартира приложението отново и отново. Все пак благодаря за връзката към другата публикация!   -  person Jimmy    schedule 29.01.2018
comment
Съгласен съм, че не е дубликат. Тук става дума за рестартиране на mod_wsgi на цялото приложение на Flask (напр. това се случва, когато потребителят принудително презареди уеб страницата - wsgi стартира нов процес).   -  person Peter Majko    schedule 15.11.2018


Отговори (1)


Така че това, което открих е, че wsgi рестартира приложението от време на време. Предполагам, че това е очаквано поведение, но не е това, което очаквах. Проблемът ми с излизането е причинен от това, че генерирам секретния ключ на приложението при стартиране. Следователно секретният ключ непрекъснато се променяше. Очевидно това прави бисквитките невалидни и потребителят излиза от системата. Така че, предполагам, че ако искате да генерирате таен ключ, а не просто да имате обикновен текст във вашия източник, трябва да го генерирате веднъж външно и да го импортирате във вашето приложение за колба, така че да не се променя винаги.

person Jimmy    schedule 29.01.2018
comment
Ако това наистина е вашата конфигурация, не трябва да рестартирате приложението през цялото време. Използвайте проверка на modwsgi .readthedocs.io/en/develop/user-guides/, за да проверите дали наистина използвате режим на демон. Въпреки това, което казва вашата конфигурация, поведението, което виждате, предполага, че използвате вграден режим, който може да се държи по този начин, тъй като Apache (не mod_wsgi) може да рециклира процеса. Прочетете също modwsgi.readthedocs.io/en/develop /ръководства за потребителя/ - person Graham Dumpleton; 30.01.2018
comment
Предлагам ви да добавите WSGIRestrictEmbedded On извън виртуалния хост, за да изключите вградения режим, за да сте сигурни, че използвате режим на демон. Също така задайте LogLevel info, така че mod_wsgi да регистрира съобщения за рестартиране на демон процес и защо се случват. - person Graham Dumpleton; 30.01.2018