Pracuję nad aplikacją opartą na języku Python (HTTP - REST lub jsonrpc interface), która będzie używana w środowisku zautomatyzowanego testowania produkcji. Spowoduje to połączenie z klientem Java, który uruchamia wszystkie skrypty testowe. Oznacza to brak dostępu do ludzi (z wyjątkiem testowania samej aplikacji).Python bottle vs uwsgi/bottle vs nginx/uwsgi/bottle
Mamy nadzieję rozmieścić to na Raspberry Pi, więc chcę, aby był stosunkowo szybki i ma mały ślad. Prawdopodobnie nie otrzyma ogromnej liczby żądań (przy maksymalnym obciążeniu, może kilku na sekundę), ale powinna być w stanie działać i pozostać stabilna przez długi czas.
Osadziłem się na butelce jako ramce ze względu na jej prostotę (jeden plik). To był tossup przeciwko Flaskowi. Każdy, kto myśli, że Flask może być lepszy, daj mi znać, dlaczego.
Byłem nieco pewności co do stabilności Butelka wbudowany serwer HTTP, więc jestem oceny tych trzech opcji: Tylko
- Zastosowanie Bottle - jako serwer http + app
- Wykorzystanie Butelka na szczycie uwsgi - Użyj uwsgi jako serwer HTTP
- użyj butelki z nginx/uwsgi
pytania:
- Jeśli nie robię niczego poza Pythonem/uwsgi, czy jest jakikolwiek powód, aby dodać nginx do miksu?
- Czy połączenie uwsgi/bottle (lub Flask) zostanie uznane za gotowe do produkcji?
- Czy jest prawdopodobne, że zdobędę cokolwiek, korzystając z oddzielnego serwera HTTP z wbudowanego produktu Bottle?
Świetna odpowiedź! Dzięki. Obecnie moja aplikacja jest skonstruowana w taki sposób, że w razie potrzeby powinna być dość łatwa do zmiany na Flask (lub inne środowisko), więc myślę, że na razie będę trzymać się butelki ... Spędziłem za dużo czasu aby nginx działał/konfigurował przed uwsgi, a do tej pory nie osiągnął żadnego sukcesu. Myślę więc, że wypróbuję zarówno gunicorn, jak i uwsgi przy minimalnej konfiguracji, i wybieram uwsgi tylko wtedy, gdy pokazuje bardzo wyraźną korzyść z wydajności; inaczej gunicorn ze względu na swoją prostotę (wciąż mam dużo czasu, aby to wszystko zmienić). – BobIsNotMyName
Szybka uwaga: okazało się, że nginx nie działał, ponieważ plik gniazda był w/tmp, a to nie działa domyślnie z Fedorą ... Z wyjątkiem tego problemu, nie ma problemu z uzyskaniem którejkolwiek z tych opcji. Pomyśl, że nadal będę trzymać się gunicornu dla łatwości rozmieszczenia. – BobIsNotMyName
Myślę, że pójdę z # 2: uwsgi bez nginx. Nie trzeba komplikować, bo nie sądzę, że moja prosta aplikacja może szybciej korzystać z plików statycznych. –