Marcin Górczyński

Marcin Górczyński Progamista, grafik,
pasjonat fotografii

Temat: Przejście z PHP na Python

Czytam i czytam wszystkie opinie o Pythonie i rysuje mi się obraz super języka bijącego PHP na głowę, więc myślę że warto go poznać. Zacząłem od Django i ... uruchamiam jakiś osobny serwer na localhost:8000. Znajduję gdzieś, że można to uruchomić na apachu za pomocą wsgi (co jest drogą przez mękę na win, aż się na Debian'a przesiadłem), ale pojawia się problem, jak na początku nauki wszystkiego - popełniam błąd i co widzę: 500 internal... - znalezienie błędu graniczy z cudem, zwłaszcza jak się nie zna języka i frameworka. Próbuję wtedy korzystać z opcji uruchamiania serwera localhost:8000 - tu przynajmniej mi pokazuje miejsce błędu. No to poprawiam. Odświeżam. I nic..., dalej to samo. Szukam, czytam, szukam, szukam... po 15 minutach okazuje się że muszę restartować serwer po każdej zmianie...

Od czego mam zacząć, bo wydaje mi się, że zacząłem od złej strony?
Mam nawyki z PHP'a
- plik w którym mam kod uruchamia się w apachu, i nie muszę zmieniać ustawień serwera aby dodać kolejną aplikację (jak to jest w przypadku wsgi) tylko dodaję sobie kolejne, zmieniam jak chcę - mogę tak zrobić w pythonie?
- robię błąd - mam podane na talerzu: plik, linijka, powód błędu - a nie litanię błędów w plikach django, których przecież nie będę analizował

Jak wygląda środowisko produkcyjne aplikacji www napisanej w pythonie (django czy bez frameworka)?
Michał Jastrzębski

Michał Jastrzębski Django-fu, phpjutsu,
sql-do

Temat: Przejście z PHP na Python

W django pisze mi się około trzy razy szybciej niż w PHP (Kohana, CakePHP). Odkąd przesiadłem się na django jak ognia unikam php. Paru klientom poleciłem django i żaden dotychczas nie narzekał:)

Eclipse ma wtyczkę djangową i ona dobrze działa, masz tam podstawowe komendy itp. Serwer deweloperski djangowy działa ok, zwykle na nim pracuję, a dopiero potem wrzucam na hosting, już w końcowych etapach projektu.

Wadą jest dostępność hostingów i htmlowców znających templatki django. Jednak parę hostingów już jest, pojawiają się nowe a html można djangować samemu.

Litania tracestacka django to akurat wspaniała rzecz imho;) wiesz gdzie błąd, jaka była ścieżka wywołania do tego błędu, wszystkie zmienne itp itd...
Marcin Górczyński

Marcin Górczyński Progamista, grafik,
pasjonat fotografii

Temat: Przejście z PHP na Python

Eclipse ma wtyczkę djangową i ona dobrze działa, masz tam podstawowe komendy itp. Serwer deweloperski djangowy działa ok, zwykle na nim pracuję, a dopiero potem wrzucam na hosting, już w końcowych etapach projektu.

No właśnie tego używam - jak piszę to po każdej zmianie muszę uruchamiać serwer (zrobić Run'a) żeby zobaczyć zmiany, potem odświeżyć stronę - w stosunku do PHP póki co dochodzi mi uruchamianie serwera - albo jest jakaś opcja (nie znalazłem takowej) żeby nie uruchamiać za każdym razem serwera?

Co do środowisk produkcyjnych to jak one działają - Apache + mod_wsgi?
Michał Jastrzębski

Michał Jastrzębski Django-fu, phpjutsu,
sql-do

Temat: Przejście z PHP na Python

manage.py runserver nie musisz odpalac. Odpalasz raz i juz sie nie przejmujesz, tylko odswiezasz strone. Co do apache to masz tone opisow na necie...
Mariusz Sucajtys

Mariusz Sucajtys Wszyscy wiedzą, że
czegoś nie da się
zrobić, aż znajdzie
...

Temat: Przejście z PHP na Python

Marcin Górczyński:
Czytam i czytam wszystkie opinie o Pythonie i rysuje mi się
obraz super języka bijącego PHP na głowę, więc myślę
że warto go poznać. Zacząłem od Django i ...
Python to nie tylko Django i webapp. Jego siła leży w standardowo dostarczanych modułach, które mają zaimplementowane wiele przydatnych funkcji (np. klient HTTP). O języku się mówi, że ma "baterries included".
Ale to głównie Django sprawiło, że się tyle o tym języku mówi.
(...), ale pojawia się problem,
jak na początku nauki wszystkiego - popełniam błąd i co widzę: 500 internal... - znalezienie błędu graniczy z cudem, zwłaszcza jak się nie zna języka i frameworka. Próbuję wtedy korzystać z opcji uruchamiania serwera localhost:8000 - tu przynajmniej mi pokazuje miejsce błędu. No to poprawiam. Odświeżam. I nic..., dalej to samo. Szukam, czytam, szukam, szukam... po 15 minutach okazuje się że muszę restartować serwer po każdej zmianie...

Od czego mam zacząć, bo wydaje mi się, że zacząłem od złej strony?
Ze złej strony się zabierasz. Zacznij od nauki samego języka. Jak konstruować pętle, warunki, klasy, jak działają podstawowe typy danych. Dive into Python może pomóc.

Na apache/mod_wsgi (czy co tam sobie kto życzy) ustawia się aplikację w środowisku testowym oraz produkcyjnym. Do dev w ogóle nie potrzebujesz apache. Sam zresztą zauważyłeś, że są z tym problemy.
Tak, jak napisał już Michał, wbudowany serwer do developmentu jest ok. I on zadba, aby kod po modyfikacjach przeładować. Jeżeli nie odpowiada Ci domyślny numer portu, można go jako parametr do manage.py runserver podać.
Wbudowany serwer do dev jest ok, nie trzeba nic stawiać, aby aplikację pisać/testować.

Co do 500 i braku jakichkolwiek komunikatów na Apache: czy debug był włączony w projekcie? BTW. apache nie trzeba restartować, jeżeli jest włączona opcja WSGIScriptReloading.
Trzeba tylko timestamp dla pliku wsgi odświeżyć.
Jeżeli koniecznie chcesz apache używać, to ustaw MaxRequestsPerChild na 1. Ale to chyba nie jest najlepszy pomysł:)
Mam nawyki z PHP'a
No to może być ciężko na początku. Ale opłaca się z nawiązką.
Ja w tym roku pisałem jedną aplikację w php po dłuższym czasie pisania w Python i za każdym razem pisanie w php podnosiło mi ciśnienie.
Jak wygląda środowisko produkcyjne aplikacji www napisanej w pythonie (django czy bez frameworka)?
Do uruchamiania aplikacji pod apache najlepiej chyba używać mod_wsgi w Daemon Mode. Pod innymi serwerami FastCGI. Można używać też mechanizmu CGI, ale wydajność rozwiązania jest kiepska. Jakiś czas temu pojawiło się SCGI i mod_scgi, ale nie przyglądałem się temu. Unikaj mod_python, bo nie jest już rozwijany i występują z nim problemy, np. z wyciekiem pamięci.
WSGI to pewien interfejs, który zapewnia komunikację aplikacji python z webserver. Dla apache ten interfejs zaimplementowany jest w mod_wsgi.

Na środowisku produkcyjnym ładujesz sobie projekt, a w nim możesz mieć kilka powiązanych ze sobą aplikacji. Można też kilka różnych niezależnych aplikacji odpalić, pod różnymi ścieżkami. Wszystko zależy od potrzeb. Nie wydaje mi się, aby potrzeba konfiguracji apache pod aplikację była czymś złym. Na serwerze umieszczamy zazwyczaj jedną, max. kilka aplikacji.Mariusz Sucajtys edytował(a) ten post dnia 28.03.11 o godzinie 07:42

Temat: Przejście z PHP na Python

Dokładnie. Tworzenie aplikacji Django od razu na apache jest nawet niewskazane. W trybie debug, jeśli korzystasz z manage.py runserver, całe stderr jest przekierowane bezpośrednio na przeglądarkę, więc jeśli masz jakiś błąd w kodzie, przeglądarka zamiast wyświetlić żądany widok, wyświetli ci szczegółowy komunikat o błędzie z informacją, w której linijce kodu się znajduje, na czym polega, etc. Bardzo wygodne rozwiązanie.

Ja zacząłem zabawę z webdeveloperką kilka tygodni temu i od razu od Django (w życiu nie widziałem na oczy PHP). Wiem, że zabrzmi to jak herezja, ale jestem bardzo miło zaskoczony tym, jak przyjemne, proste i przemyślane środowisko udało się stworzyć.
Michał Jastrzębski

Michał Jastrzębski Django-fu, phpjutsu,
sql-do

Temat: Przejście z PHP na Python

Dlaczego od razu jak herezja? PHP jest o tyle dobre na początek że napisanie hello world to jedna linijka, w django troche wiecej. Dlatego łatwiej się uczy na php. Ale jak ktoś ma doświadczenie w programowaniu generalnie to dość fajnie zacząć od django z webdev.

Temat: Przejście z PHP na Python

Jak herezja, bo przy moim doświadczeniu z webdeveloperką i znajomości Django nie do końca powinienem się w tym temacie wypowiadać, przynajmniej na razie : )

konto usunięte

Temat: Przejście z PHP na Python

Marcin Górczyński:
Mam nawyki z PHP'a
Może Ci się przyda: http://www.php2python.com
Krzysztof Krakowiak

Krzysztof Krakowiak Software Developer

Temat: Przejście z PHP na Python

nim pochłonie cie Django spójrz tutaj http://www.playframework.org/
Bartłomiej Ogryczak

Bartłomiej Ogryczak Backend Developer @
Layar

Temat: Przejście z PHP na Python

Marcin Górczyński:
.
Znajduję gdzieś, że można to uruchomić na apachu za pomocą wsgi

Oczywiście. Tylko do developerki nie trzeba.
po 15 minutach okazuje się że muszę restartować serwer po każdej zmianie...

Hmm.. nie trzeba o ile nie dałeś parametru --noreload

- robię błąd - mam podane na talerzu: plik, linijka, powód błędu - a nie litanię błędów w plikach django, których przecież nie będę analizował

Masz podane na talerzu, cały trace stack, zaczynając od linii twojego kodu.
Jak wygląda środowisko produkcyjne aplikacji www napisanej w pythonie (django czy bez frameworka)?

http://code.djangoproject.com/wiki/ServerArrangementsBartłomiej Ogryczak edytował(a) ten post dnia 30.03.11 o godzinie 12:11
Marcin Górczyński

Marcin Górczyński Progamista, grafik,
pasjonat fotografii

Temat: Przejście z PHP na Python

Powiem tak: dzięki chłopaki za porady. Stronka php2python bardzo pomocna (zwłaszcza przy moim zakorzenionym PHP'ie)

Następna dyskusja:

PHP VS Ruby VS Python - pro...




Wyślij zaproszenie do