Portál AbcLinuxu, 13. května 2025 21:32

Dotaz: django a restart apache

16.11.2008 15:06 Wave
django a restart apache
Přečteno: 453×
Odpovědět | Admin

Ahoj, chystám se dělat celkem komplexní webovou aplikaci, jako nástroj jsem si vybral python+django a Apache+mod_python. Mám jen malé zkušenosti s webovým programováním, možná právě proto mě při čtení dokumentace djanga zarazila jedna věc: kdykoliv provedu změnu kódu, musí se restartovat Apache.

Jak se to řeší? Je mi jasné, že na produkčním serveru se kód nemění každý den, ale ve fázi testování samotnými uživateli se to bude dít poměrně často a to za provozu! Co když hosting vůbec neumožňuje restart Apache?

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

16.11.2008 15:30 helb
Rozbalit Rozbalit vše Re: django a restart apache
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ve fázi testování se většinou používá vestavěný server djanga, ne? python manage.py runserver ip:port
16.11.2008 15:41 Wave
Rozbalit Rozbalit vše Re: django a restart apache
No jasně, ale předpokládám, že i po důkladném otestování na vestavěném serveru a následném ostrém nasazení na produkční server bude stejně aplikace plná chyb, které najdou uživatelé až při běžném provozu a které bude třeba okamžitě opravovat.
16.11.2008 16:57 sewi | skóre: 21 | blog: Bunker Hill | Prostějov
Rozbalit Rozbalit vše Re: django a restart apache
Odpovědět | | Sbalit | Link | Blokovat | Admin

Zkusil bych kouknout do django book kapitola 20:

"Because mod_python caches loaded Python code, when deploying Django sites on mod_python you’ll need to restart Apache each time you make changes to your code. This can be a hassle, so here’s a quick trick to avoid it: just add MaxRequestsPerChild 1 to your config file to force Apache to reload everything for each request. But don’t do that on a production server, or we’ll revoke your Django privileges."

Ale da se to pouzit jen na vyvojovy server.

And they thought they were free
16.11.2008 17:59 Wave
Rozbalit Rozbalit vše Re: django a restart apache
To znamená, že když změním ten parametr v konfiguraci, tak mod_python okamžitě vyplivne cache a přestane dál cachovat?

moc nerozumím tomuhle:
But don’t do that on a production server, or we’ll revoke your Django privileges.
Takže postup by byl ten, že 1) vyzkouším opravu na vývojovém serveru 2) nastavím MaxRequestsPerChild na produkčním serveru 3) provedu opravu 4) nastavím MaxRequestsPerChild zpátky?
16.11.2008 18:48 FooBar
Rozbalit Rozbalit vše Re: django a restart apache
Coz je uplne zbytecne, ponevadz jak zminil kolega vyse, na vyvoj lze pouzivat built-in development server:)

Pokud je aplikace "plna chyb, ktere je nutne okamzite opravovat", je neco dost brutalne principialne spatne ve tvem vyvojovem cyklu. Nepopiram, ze se muze stat, ze tam bude neco kritickeho... ale proboha, preci pred nasazenim aplikace (dost kriticke na to, aby te trapilo nekolik vterin restartu apache) udelam poradne testovani, ne?
16.11.2008 18:52 Boris Dušek | skóre: 22 | blog: everything
Rozbalit Rozbalit vše Re: django a restart apache
spíš jde o to, že když to má na hostingu, tak i kdyby ho netrápil downtime při restartu, tak restart stejně nemůže udělat
vim ~/.emacs
17.11.2008 13:10 Wave
Rozbalit Rozbalit vše Re: django a restart apache
Jsem realista a mám dost zkušeností s programováním desktopových aplikací. Nikdo si nemůže dovolit tvrdit, že po otestování (byť důkladném) hotového programu bude mít bezchybnou aplikaci. Drtivou většinu chyb najdou uživatelé v reálném provozu. V případě desktopu je trivialitou chyby opravit a vydat nový release, nechápu ale jak se to dělá v běžící on-line aplikaci na serveru, který není pod vaší kontrolou a běží na něm spousta jiných, cizích aplikací.
16.11.2008 21:00 sewi | skóre: 21 | blog: Bunker Hill | Prostějov
Rozbalit Rozbalit vše Re: django a restart apache

Myslel jsem to jako jeden vyvojovy server nastaveny s MaxRequestsPerChild 1 a produkcni server s normalni hodnotou.

And they thought they were free
16.11.2008 20:50 Messa | skóre: 39 | blog: Messa
Rozbalit Rozbalit vše Re: django a restart apache
Odpovědět | | Sbalit | Link | Blokovat | Admin
Mimochodem, provozovat Django pod mod_python je "normální" a obvyklé? Přeci jenom, není to PHP, u kterého se po zpracování požadavku vše zahodí; to nakonec budete mít tolik instancí Djanga, kolik vám apache naforkuje workerů, nebo na to máte aspoň nějakou obezličku? Docela se divím, že je to v oficiální dokumentaci označeno jako preferovaný postup; nejspíše to bude pro jeho jednoduchost.

Apache je legenda a určitě dobrý software, ale tak jak je obvykle používán - jeden apache pro tisíc domén - jeho užitečnost dle mého názoru končí u cgi-bin a PHP. Pak už nastávají problémy. Například právě s tím, že kvůli vaší jedné aplikaci by se určitě neměl každý den restartovat front-end webserver, za kterým je dalších několik lidí.

Co vím, tak komplexnější webové aplikace (no, spíš všechny webové aplikace co nejsou v PHP) se provozují na vlastním aplikačním serveru a nějaký Apache, Lighttpd nebo nginx (protože to už je pak jedno) slouží jen jako frontend - jako rozhazovač HTTP požadavků na tyto aplikační servery. Je to v mnoha ohledech lepší a systémovější. Bohužel není jednoduché to napasovat na mass-hosting. Občas se jako aplikační server používá i Apache s mod_pythonem (to už je ale "váš" Apache a ne ten pod kontrolou hostingu).

Řikáte, že pojedete na hostingu. Jako první byste si možná měl zjistit, jak tento váš hosting pracuje s Python a Django aplikacemi.
17.11.2008 13:14 Wave
Rozbalit Rozbalit vše Re: django a restart apache
Díky za podněty, ještě to funguje s fastCGI, tady ale moje vědomosti končí, budu muset ještě trochu číst;)
18.11.2008 13:40 Wave
Rozbalit Rozbalit vše Re: django a restart apache
Tak jsem se informoval na hostingu a skutečně to provozují přes fastCGI, což je vlastně docela logické:)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.