2014-07-22 13 views
5

Używam serwera WWW z kolbą, działa dobrze podczas testów, ale teraz zawiesza się co najmniej raz dziennie. Wszystko, co muszę zrobić, to ponownie uruchomić i będzie działać ponownie. Czy istnieje dobry sposób na ich monitorowanie i może powinienem po prostu zabić/zrestartować go za każdym razem, gdy zawiedzie. Czy ludzie rzeczywiście zabijają okresowo swój serwer sieciowy, aby tego uniknąć?Serwer sieci web Python Flask przestaje odpowiadać

+0

Czy używasz serwera sieciowego typu "flask" we wdrożeniu? –

+3

Aby rozwinąć pytanie Bartosza: Domyślny serwer internetowy wbudowany w kolbę jest przeznaczony tylko do programowania - nie nadaje się do produkcji. Aby wdrożyć aplikacje do kolb, potrzebujesz lepszego serwera WSGI. Zobacz dokumentację: http://flask.pocoo.org/docs/deploying/ – Daniel

+0

jest to moja aplikacja internetowa do kolb. Zasadniczo zaczynam i pozostawiam go uruchomionym. Nie używam niczego innego (ngix, apache). –

Odpowiedz

3

Jeśli używasz domyślnego serwera internetowego Flask: Nie rób tego. Jest przeznaczony TYLKO do programowania.

Jako dodatkowy zasób warto czytać te dwa posty na blogach na temat wdrażania aplikacji kolby:

http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-xvii-deployment-on-linux-even-on-the-raspberry-pi http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-xviii-deployment-on-the-heroku-cloud

A do monitorowania procesów w serwer, można dać Watchy spróbować:

http://redbrain.github.io/watchy/

2

Podczas gdy domyślny serwer WWW może nie być najlepszy do produkcji, prawdopodobnie nie jest podstawową przyczyną awarie. Używam go w środowisku produkcyjnym w wewnętrznej sieci i jest bardzo stabilny. Przed obwinianiem serwera sprawdź, czy twój kod może obsłużyć żądania, które mogą się ze sobą kolidować. W moim przypadku miałem dużo problemów ze stabilnością, zanim wprowadziłem blokowanie w tabelach baz danych, aby niektóre żądania były blokowane, dopóki wcześniejsze żądania nie zostaną wykonane z aktualizacjami. Flask nie może się upewnić, że twój kod jest bezpieczny dla wątków. A zmiana serwera sieciowego nie pomoże, jeśli tak nie jest.

0

W moim przypadku muszę zmienić worker_class z "sync" na "gevent", ponieważ wykonuję niektóre asynchroniczne zadania. Wtedy już nie będzie wisieć.

Powiązane problemy