pythonanywhere & wsgi

38 views
Skip to first unread message

Jaroslav Vysoký

unread,
Oct 29, 2017, 8:49:59 PM10/29/17
to djan...@googlegroups.com
Ahoj kamarádi! 

Sice mi to přijde pro tuto skupinu OOT, ale vzhledem k tomu že py.cz nejede a Jakub V. se mě na info o výpadku pythoní konference zeptal, proč se nezeptám na django-cs (což mě malinko překvapilo), tak se tedy ptám zde: 

Potřeboval bych na pythonanywhere.com servírovat nějaké statické soubory a nechci jít atomovkou na komáry a řešit to např. přes django aplikaci. Možná i proto, že bych měl konečně rád v některých věcech jasno. 

Nejprve jsem se pokusil zeptat "starších a zkušenějších" na nějaké how-to. Bylo mi sděleno, že na wsgi protokolu není nic složitého, abych to nastudoval. Sice jsem si o tom už předem něco přečetl, ale jelikož nejsem nic moc inteligentního, tak potřebuji nějaký příklad. Pokusil jsem se tedy pochopit wsgi hello_worls na PA a přebastlit nějakou aplikaci, která se tvářila, že by měla cosi takového činit. Při tom jsem zjistil, že asi nejsem jediný blb na světě, nicméně jsem to nějak rozchodil. 

Ale: 

Browser mi nějaké věci zobrazuje jinak než odjinud. Nechci to konkretizovat, protože bych nerad znovu absolvoval diskusi o validním HTML Předpokládám, že http není žádná magie, takže response serveru se skládá z headers a data. Data jsou 100% stejná, hlavička se liší. Mám podezření na "Connection". Na "cizím" serveru, kde se mi vše jeví OK je hodnota "close", na mém pythonanywhere je "keep-alive". 

Finální otázka: 

Jak mám přinutit ze své aplikace nadřazený middleware, potažmo http server, aby v hlavičce bylo Connection:close?

Pro úplnost výpis hlaviček z requests: 
>>> rborec.headers
CaseInsensitiveDict({'connection': 'close', 'server': 'nginx', 'content-type': 'text/html', 'etag': 'W/"2178770-1cf0-55cb6ae579c41"', 'content-encoding': 'gzip', 'transfer-encoding': 'chunked', 'last-modified': 'Sun, 29 Oct 2017 22:02:42 GMT', 'date': 'Sun, 29 Oct 2017 23:01:10 GMT'})
>>> ranywhere.headers
CaseInsensitiveDict({'connection': 'keep-alive', 'x-clacks-overhead': 'GNU Terry Pratchett', 'server': 'openresty/1.9.15.1', 'contentlength': '7408', 'contenttype': 'text/html', 'transfer-encoding': 'chunked', 'date': 'Sun, 29 Oct 2017 23:00:55 GMT'})

>>> rborec.content == ranywhere.content
True 

Předem děkuji a všem python-django kamarádům přeji dobrou noc, dobré ráno a dobrý den. 

Jarda V. 

P.S. 12 yo Glen Garioch se mi momentálně jeví jako velmi uspokojivá. Podstatně přátelštější než PythonAnywhere&WSGI. Mohu doporučit...

starenka .

unread,
Oct 30, 2017, 3:29:55 AM10/30/17
to djan...@googlegroups.com
Cau borce! 

Jen tak od boku - prave sem se zbudil: nechybi ti pomlcka v content-type? To by vysvetlovalo to "blby zobrazeni" docela dobre bych rek.

S.

-----
'aknerats'[::-1]

--
--
E-mailová skupina djan...@googlegroups.com
Správa: http://groups.google.cz/group/django-cs
---
Tuto zprávu jste obdrželi, protože jste přihlášeni k odběru skupiny „django-cs“ ve Skupinách Google.
Chcete-li zrušit odběr skupiny a přestat dostávat e-maily ze skupiny, zašlete e-mail na adresu django-cs+unsubscribe@googlegroups.com.
Chcete-li tuto diskusi zobrazit na webu, navštivte https://groups.google.com/d/msgid/django-cs/CAFrUbnmF%3DU2n_8sXg0wXq1RO5Yg9bHoe2woCFAvEXhN94iydNQ%40mail.gmail.com.
Další možnosti najdete na https://groups.google.com/d/optout.

Jirka Vejrazka

unread,
Oct 30, 2017, 3:30:11 AM10/30/17
to Jaroslav Vysoký
Ahoj,

 A nemas pred tim neco jako Apache nebo nginx? To by bylo nejjednodussi reseni...
 
Jirka
--
--
E-mailová skupina djan...@googlegroups.com
Správa: http://groups.google.cz/group/django-cs
---
Tuto zprávu jste obdrželi, protože jste přihlášeni k odběru skupiny „django-cs“ ve Skupinách Google.
Chcete-li zrušit odběr skupiny a přestat dostávat e-maily ze skupiny, zašlete e-mail na adresu django-cs+...@googlegroups.com.

Jirka Vejrazka

unread,
Oct 30, 2017, 3:31:31 AM10/30/17
to Jaroslav Vysoký
Mimochodem, Conection by na to nemelo mit vliv. Pokud se ti to stahuje spatne, tak je bud neco spatne s mimetype, nebo browser nepoznal mimetype a dela nepovedenou autodetekci.

 Jirka

From: Jaroslav Vysoký
Sent: Monday, 30 October 2017 01:50
Subject: [django-cs] pythonanywhere & wsgi

Petr Messner

unread,
Oct 30, 2017, 3:32:14 AM10/30/17
to djan...@googlegroups.com
Ahoj

Dne 30. října 2017 1:49 Jaroslav Vysoký <jarosla...@gmail.com> napsal(a):

Ahoj kamarádi! 

Sice mi to přijde pro tuto skupinu OOT, ale vzhledem k tomu že py.cz nejede a Jakub V. se mě na info o výpadku pythoní konference zeptal, proč se nezeptám na django-cs (což mě malinko překvapilo), tak se tedy ptám zde: 

Potřeboval bych na pythonanywhere.com servírovat nějaké statické soubory a nechci jít atomovkou na komáry a řešit to např. přes django aplikaci. Možná i proto, že bych měl konečně rád v některých věcech jasno. 

Na statické weby je podle mě nejlepší:

- AWS S3 (+ CloudFront CDN) - robustní, API, AWS platforma...
- Github pages - snadný deployment
- některé CDN obsahují přímo storage vhodné pro statické weby, např. CDN77: https://www.cdn77.com/cdn-storage

 

Nejprve jsem se pokusil zeptat "starších a zkušenějších" na nějaké how-to. Bylo mi sděleno, že na wsgi protokolu není nic složitého, abych to nastudoval. Sice jsem si o tom už předem něco přečetl, ale jelikož nejsem nic moc inteligentního, tak potřebuji nějaký příklad. Pokusil jsem se tedy pochopit wsgi hello_worls na PA a přebastlit nějakou aplikaci, která se tvářila, že by měla cosi takového činit. Při tom jsem zjistil, že asi nejsem jediný blb na světě, nicméně jsem to nějak rozchodil. 

Ale: 

Browser mi nějaké věci zobrazuje jinak než odjinud. Nechci to konkretizovat, protože bych nerad znovu absolvoval diskusi o validním HTML Předpokládám, že http není žádná magie, takže response serveru se skládá z headers a data. Data jsou 100% stejná, hlavička se liší. Mám podezření na "Connection". Na "cizím" serveru, kde se mi vše jeví OK je hodnota "close", na mém pythonanywhere je "keep-alive". 


Tohle je otázka serveru - nejčastěji WSGI server gunicorn apod. implementuje pouze jednoduchou podmnožinu HTTP a neumí nic jiného než Connection: close, ale typicky se před to dává ještě nginx, který už umí (skoro) všechno - Connection: keepalive, http2 apod. Takže tady bys nám musel popsat kompletní stack a jeho konfiguraci. Ale podle mě tě to nemusí moc trápit :)
 
Finální otázka: 

Jak mám přinutit ze své aplikace nadřazený middleware, potažmo http server, aby v hlavičce bylo Connection:close?


Proč to tam chceš? keepalive je vhodnější pro celkovou rychlost.

Jestli ti browser zobrazuje něco někde jinak, tak tímhle to nejspíš nebude :)
 

Pro úplnost výpis hlaviček z requests: 
>>> rborec.headers
CaseInsensitiveDict({'connection': 'close', 'server': 'nginx', 'content-type': 'text/html', 'etag': 'W/"2178770-1cf0-55cb6ae579c41"', 'content-encoding': 'gzip', 'transfer-encoding': 'chunked', 'last-modified': 'Sun, 29 Oct 2017 22:02:42 GMT', 'date': 'Sun, 29 Oct 2017 23:01:10 GMT'})
>>> ranywhere.headers
CaseInsensitiveDict({'connection': 'keep-alive', 'x-clacks-overhead': 'GNU Terry Pratchett', 'server': 'openresty/1.9.15.1', 'contentlength': '7408', 'contenttype': 'text/html', 'transfer-encoding': 'chunked', 'date': 'Sun, 29 Oct 2017 23:00:55 GMT'})

>>> rborec.content == ranywhere.content
True 

Předem děkuji a všem python-django kamarádům přeji dobrou noc, dobré ráno a dobrý den. 

Jarda V. 

P.S. 12 yo Glen Garioch se mi momentálně jeví jako velmi uspokojivá. Podstatně přátelštější než PythonAnywhere&WSGI. Mohu doporučit...

--
--
E-mailová skupina djan...@googlegroups.com
Správa: http://groups.google.cz/group/django-cs
---
Tuto zprávu jste obdrželi, protože jste přihlášeni k odběru skupiny „django-cs“ ve Skupinách Google.
Chcete-li zrušit odběr skupiny a přestat dostávat e-maily ze skupiny, zašlete e-mail na adresu django-cs+unsubscribe@googlegroups.com.

Jaroslav Vysoký

unread,
Oct 30, 2017, 3:57:40 AM10/30/17
to django-cs
Stařenka vidí, i když spí! Pomlčku jsem doplnil, mělo to vliv. Dík! 

J. 

Dne pondělí 30. října 2017 8:29:55 UTC+1 starenka napsal(a):
Chcete-li zrušit odběr skupiny a přestat dostávat e-maily ze skupiny, zašlete e-mail na adresu django-cs+...@googlegroups.com.

starenka .

unread,
Oct 30, 2017, 4:02:36 AM10/30/17
to djan...@googlegroups.com
Juchu!

-----
'aknerats'[::-1]

Chcete-li zrušit odběr skupiny a přestat dostávat e-maily ze skupiny, zašlete e-mail na adresu django-cs+unsubscribe@googlegroups.com.
Chcete-li tuto diskusi zobrazit na webu, navštivte https://groups.google.com/d/msgid/django-cs/79ebeeee-be59-47fd-9814-951dca190f13%40googlegroups.com.

Jirka Vejrazka

unread,
Oct 30, 2017, 4:02:55 AM10/30/17
to Jaroslav Vysoký
Super, ze se to jednoduse vyresilo? Kazdopadne +100 bodu za 'x-clacks-overhead' :D

 Jirka

Jaroslav Vysoký

unread,
Oct 30, 2017, 4:09:18 AM10/30/17
to django-cs
Díky za odpověď! Zdá se, že s tím keep-alive to skutečně nesouvisí. Asi to bude jenom o content-type. V hlavičce mi chyběla pomlčka (dědictví toho upravovaného programu). V inspektoru browseru to nebylo na první pohled vidět a v requests jsem to pak přehlédl. Ještě mi tam něco nesedí, ale musím to znovu prověřit. 

J. 

Dne pondělí 30. října 2017 8:32:14 UTC+1 Messa napsal(a):
Ahoj

Chcete-li zrušit odběr skupiny a přestat dostávat e-maily ze skupiny, zašlete e-mail na adresu django-cs+...@googlegroups.com.

starenka .

unread,
Oct 30, 2017, 4:10:23 AM10/30/17
to djan...@googlegroups.com
No vidis, tak ty sem zase ja prehlid. A to si rikam starenka :(
-----
'aknerats'[::-1]

Chcete-li zrušit odběr skupiny a přestat dostávat e-maily ze skupiny, zašlete e-mail na adresu django-cs+unsubscribe@googlegroups.com.

--
--
E-mailová skupina djan...@googlegroups.com
Správa: http://groups.google.cz/group/django-cs
---
Tuto zprávu jste obdrželi, protože jste přihlášeni k odběru skupiny „django-cs“ ve Skupinách Google.
Chcete-li zrušit odběr skupiny a přestat dostávat e-maily ze skupiny, zašlete e-mail na adresu django-cs+unsubscribe@googlegroups.com.
Chcete-li tuto diskusi zobrazit na webu, navštivte https://groups.google.com/d/msgid/django-cs/20171030080248.6135890.36736.4096%40gmail.com.

Jaroslav Vysoký

unread,
Oct 30, 2017, 4:11:56 AM10/30/17
to django-cs
Jiříčku neboj, ještě budu určitě otravovat! 

J. 


Dne pondělí 30. října 2017 9:02:55 UTC+1 JirkaV napsal(a):

starenka .

unread,
Oct 30, 2017, 4:12:17 AM10/30/17
to djan...@googlegroups.com
Jardo, nejjednodussi je vzit ty headers z obou requestu a prohnat to difflibem (import difflib)
-----
'aknerats'[::-1]
Reply all
Reply to author
Forward
0 new messages