Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: petr0707 20. 06. 2019, 09:12:17

Název: Použití Python Flask v komerční sféře
Přispěvatel: petr0707 20. 06. 2019, 09:12:17
Dobrý den,

chtěl jsme se zeptat, setkal se někdo z Vás s nějakou českou firmou, který by vyvíjela aplikace ve Flask frameworku? Já jsem se zatím setkal pouze s jednou která v tom vyvíjela aplikace pro skladové hospodářství resp inventury skladu. Nevíte náhodou někdo o dalších firmách? Jde o to jestli má cenu se tento skvělý framework učit i z důvodu výdělku?

Děkuji
Název: Re:Použití Python Flask v komerční sféře
Přispěvatel: gill 20. 06. 2019, 10:25:46
Ten framework je jednoduchy, muzete ho zacit pouzivat bez uceni. Proto se neobevuje v inzeratech. Spis hledejte sqlalchemy.
Název: Re:Použití Python Flask v komerční sféře
Přispěvatel: user 23. 06. 2019, 11:18:10
Ako napisal gill, taky hello world do prehliadaca je tusim na 3 riadky kodu. Zaklad Flask-u sa da pochopit za jeden den, mozno potom este chvilku trva, kym clovek dobre pochopi kontexty a pracu s nimi (Application context, Request context), ale je to naozaj jednoduche. Sqlalchemy sa s Flaskom moze, ale nemusi pouzivat, ale stoji za to s nim vediet pracovat. Dnes si uz neviem predstavit zlozitejsiu databazovu aplikaciu bez tohoto ORM.

Prakticky, Flask je iba taka nadstavba nad frameworkom Werkzeug. Poznam viacero firiem, pre ktory bol Flask trochu zvazujuci, tak si ho prerobili alebo si nad Werkzeug naprogramovali podobny framework. A to uz je potom o tom, aby si spravne chapal ako funguje Werkzeug, WSGI, ako to spravne nastavit na produkcnu aplikaciu, ci a ako pouzivat procesy a thready... Tam uz je toho vela sa co ucit (resp. skusat).
Název: Re:Použití Python Flask v komerční sféře
Přispěvatel: alexfa 23. 06. 2019, 20:11:00
Python se dle meho nazoru posunuje smerem k asynchronim aplikacim.
Flask je z tohoto pohledu jiz prekonanym konceptem, takze doporucuji se take podivat na asyncio alternativy k Flasku.

Název: Re:Použití Python Flask v komerční sféře
Přispěvatel: gill 23. 06. 2019, 20:27:06
Python se dle meho nazoru posunuje smerem k asynchronim aplikacim.
Flask je z tohoto pohledu jiz prekonanym konceptem, takze doporucuji se take podivat na asyncio alternativy k Flasku.

Asynchronni alternativa nikdy nebude stejne robustni jako oddeleny proces na request. Asynchronni komunikace s SQL je navic zbytecna. Vetsinou jsem se setkal s resenim flask + asynchronni server pro websocketova spojeni.
Název: Re:Použití Python Flask v komerční sféře
Přispěvatel: uetoyo 24. 06. 2019, 14:12:23
Sqlalchemy sa s Flaskom moze, ale nemusi pouzivat, ale stoji za to s nim vediet pracovat. Dnes si uz neviem predstavit zlozitejsiu databazovu aplikaciu bez tohoto ORM.
Zvláštní, mám to přesně naopak, vůbec nevím k čemu je tahle vrstva dobrá. Nestačí umět používat repository pattern a unit of work? Dost bych taky nespoléhal, že ti ORM postaví rozumný schéma.
Název: Re:Použití Python Flask v komerční sféře
Přispěvatel: gill 24. 06. 2019, 14:52:17
Zvláštní, mám to přesně naopak, vůbec nevím k čemu je tahle vrstva dobrá.

aby ušetřila práci. Zjednodušuje dotazování, nemusíte stále dokola psát stejné podmínky joinů. Když dlouhodobě pracujete se složitější databází, tak se ORM vyplatí.

že ti ORM postaví rozumný schéma.

ORM postaví takové schéma, jaké definujete. SQLAlchemy nijak neomezuje.
Název: Re:Použití Python Flask v komerční sféře
Přispěvatel: uetoyo 24. 06. 2019, 17:17:28
Zvláštní, mám to přesně naopak, vůbec nevím k čemu je tahle vrstva dobrá.

aby ušetřila práci. Zjednodušuje dotazování, nemusíte stále dokola psát stejné podmínky joinů. Když dlouhodobě pracujete se složitější databází, tak se ORM vyplatí.

že ti ORM postaví rozumný schéma.

ORM postaví takové schéma, jaké definujete. SQLAlchemy nijak neomezuje.

Máme s SQLAlchemy zkušenost a v ničem nám nepomohla. To že schovává SQL mi přijde jako nevýhoda. Co se týká generování schématu, ne děkuji. Pracujem s Postgresem, nepotřebujem nějaký magický nástroj co si poradí s každou databází. Schéma se verzuje, každá změna je jako SQL skript, nic v Pythonu tam nechcem.
Název: Re:Použití Python Flask v komerční sféře
Přispěvatel: gill 24. 06. 2019, 17:35:45
Zvláštní, mám to přesně naopak, vůbec nevím k čemu je tahle vrstva dobrá.

aby ušetřila práci. Zjednodušuje dotazování, nemusíte stále dokola psát stejné podmínky joinů. Když dlouhodobě pracujete se složitější databází, tak se ORM vyplatí.

že ti ORM postaví rozumný schéma.

ORM postaví takové schéma, jaké definujete. SQLAlchemy nijak neomezuje.

Máme s SQLAlchemy zkušenost a v ničem nám nepomohla.

Jak dlouho, na kolika projektech jste ji používali? Zvýšená produktivita se projeví až po čase.

To že schovává SQL mi přijde jako nevýhoda.

nic neschovává, dotazy generuje transparentně. Jen nemusíte psát stále dokola stejné části dotazů.

Co se týká generování schématu, ne děkuji. Pracujem s Postgresem, nepotřebujem nějaký magický nástroj co si poradí s každou databází. Schéma se verzuje, každá změna je jako SQL skript, nic v Pythonu tam nechcem.

Máte příklad tabulky, kterou SQLAlchemy nedokáže vygenerovat? Příklad dotazu, který nelze formulovat?
Název: Re:Použití Python Flask v komerční sféře
Přispěvatel: alexfa 24. 06. 2019, 20:36:30
Python se dle meho nazoru posunuje smerem k asynchronim aplikacim.
Flask je z tohoto pohledu jiz prekonanym konceptem, takze doporucuji se take podivat na asyncio alternativy k Flasku.

Asynchronni alternativa nikdy nebude stejne robustni jako oddeleny proces na request. Asynchronni komunikace s SQL je navic zbytecna. Vetsinou jsem se setkal s resenim flask + asynchronni server pro websocketova spojeni.

Znate C10k problem?
https://en.wikipedia.org/wiki/C10k_problem

Par let jsem stavel server na presne stejnem konstruktu, ktery zde uvadite "... nebude stejne robustni jako oddeleny proces na request ...".
Neni to pravda. Viz treba Apache vs NGINX.
Název: Re:Použití Python Flask v komerční sféře
Přispěvatel: gill 24. 06. 2019, 23:30:20
Znate C10k problem?

ktera SQL databaze dokaze soucasne obsluhovat 10k spojeni?
Název: Re:Použití Python Flask v komerční sféře
Přispěvatel: alexfa 25. 06. 2019, 09:14:55
Znate C10k problem?

ktera SQL databaze dokaze soucasne obsluhovat 10k spojeni?

V asynchronnim svete tu otazku musite polozit jinak: ktera SQL databaze je schopna obsluhovat 10k pripojenych klientu.
Spojeni bude radove mene. A odpoved je, ze napr. PostgreSQL.

Zrovna ted resime jeden "brownfield" projekt, ktera byla puvodne napsana v synchronnim paradigmatu. Jeden pozadavek od klienta = jedno spojeni = jedno vlakno (process) = jedno spojeni do PostgreSQL databaze. Samozrejme toto prestalo skalovat, neprekvapive kdyz se priblizila hranice 10k pripojenych klientu. Cely kod je v podstate na vyhozeni (je to Java).
Resime to prepisem do Python/asyncio, prave protoze pak neplati vyse uvedena spojka.
V asynchronnim svete muzete mit klidne 10k spojeni, 16 procesu/vlaken (protoze mate treba 16 CPU jader), k tomu pak napr. 64 spojeni na databazi (zde mate argument proc async je pro databaze vhodny) a cela aplikace bezi paradne.
Je to, protoze webove aplikace jsou v dnesni dobe I/O bound ( https://en.wikipedia.org/wiki/I/O_bound ) a tudiz nema smysl pro ne blokovat cely proces potazmo CPU vlakno.
A proto si stale myslim (prakticky overeno), ze pro webove aplikace je synci pristup prekonany.
Název: Re:Použití Python Flask v komerční sféře
Přispěvatel: gill 25. 06. 2019, 12:20:39
V asynchronnim svete tu otazku musite polozit jinak: ktera SQL databaze je schopna obsluhovat 10k pripojenych klientu.

to znamena co? I v asynchronnim svete coroutiny sdili nejaky connection pool, ktery je urcite mensi nez 10k spojeni, typicky radove desitky. Bottleneck je databaze, ne aplikace.
Název: Re:Použití Python Flask v komerční sféře
Přispěvatel: uetoyo 25. 06. 2019, 14:29:32
Zvláštní, mám to přesně naopak, vůbec nevím k čemu je tahle vrstva dobrá.

aby ušetřila práci. Zjednodušuje dotazování, nemusíte stále dokola psát stejné podmínky joinů. Když dlouhodobě pracujete se složitější databází, tak se ORM vyplatí.

že ti ORM postaví rozumný schéma.

ORM postaví takové schéma, jaké definujete. SQLAlchemy nijak neomezuje.

Máme s SQLAlchemy zkušenost a v ničem nám nepomohla.

Jak dlouho, na kolika projektech jste ji používali? Zvýšená produktivita se projeví až po čase.

To že schovává SQL mi přijde jako nevýhoda.

nic neschovává, dotazy generuje transparentně. Jen nemusíte psát stále dokola stejné části dotazů.

Co se týká generování schématu, ne děkuji. Pracujem s Postgresem, nepotřebujem nějaký magický nástroj co si poradí s každou databází. Schéma se verzuje, každá změna je jako SQL skript, nic v Pythonu tam nechcem.

Máte příklad tabulky, kterou SQLAlchemy nedokáže vygenerovat? Příklad dotazu, který nelze formulovat?

Co s tím má společného, jak dlouho jsme co použivali? Nám ta knihovna nepomáhala, já nepíší, že něco snad neumí, ale přímočarost je pro nás přednější a jediná výhoda mi přišla, že se teoreticky dá migrovat na jinou DB. Žádné komplexní věci neděláme, tak ji asi nepotřebujem -- už vůbec ne schéma generované z modelu.
Název: Re:Použití Python Flask v komerční sféře
Přispěvatel: Idris 25. 06. 2019, 16:27:12
Python se dle meho nazoru posunuje smerem k asynchronim aplikacim.
Flask je z tohoto pohledu jiz prekonanym konceptem, takze doporucuji se take podivat na asyncio alternativy k Flasku.

Asynchronni alternativa nikdy nebude stejne robustni jako oddeleny proces na request. Asynchronni komunikace s SQL je navic zbytecna. Vetsinou jsem se setkal s resenim flask + asynchronni server pro websocketova spojeni.
Znate C10k problem?
https://en.wikipedia.org/wiki/C10k_problem
Tohle je z přelomu století, teď už není problém ani C10M.
Název: Re:Použití Python Flask v komerční sféře
Přispěvatel: alexfa 26. 06. 2019, 08:56:28
V asynchronnim svete tu otazku musite polozit jinak: ktera SQL databaze je schopna obsluhovat 10k pripojenych klientu.

to znamena co? I v asynchronnim svete coroutiny sdili nejaky connection pool, ktery je urcite mensi nez 10k spojeni, typicky radove desitky. Bottleneck je databaze, ne aplikace.

Presne tak, takze je uplne zbytecne, aby vam databaze (nebo cokoliv jineho, pomaleho) blokovalo process/threadu, kdyz se vlastne jen ceka.
Pekne jste si odpovedel, proc je asyncio dobre i pro komunikaci s databazi :-)
Název: Re:Použití Python Flask v komerční sféře
Přispěvatel: gill 26. 06. 2019, 11:00:11
V asynchronnim svete tu otazku musite polozit jinak: ktera SQL databaze je schopna obsluhovat 10k pripojenych klientu.

to znamena co? I v asynchronnim svete coroutiny sdili nejaky connection pool, ktery je urcite mensi nez 10k spojeni, typicky radove desitky. Bottleneck je databaze, ne aplikace.

Presne tak, takze je uplne zbytecne, aby vam databaze (nebo cokoliv jineho, pomaleho) blokovalo process/threadu, kdyz se vlastne jen ceka.
Pekne jste si odpovedel, proc je asyncio dobre i pro komunikaci s databazi :-)

vykon aplikace je omezen databazi. je jedno jestli cekani na vysledek dotazu blokuje aplikacni proces, protoze databaze by stejne vic nezvladla.
Název: Re:Použití Python Flask v komerční sféře
Přispěvatel: Idris 26. 06. 2019, 16:27:09
V asynchronnim svete tu otazku musite polozit jinak: ktera SQL databaze je schopna obsluhovat 10k pripojenych klientu.

to znamena co? I v asynchronnim svete coroutiny sdili nejaky connection pool, ktery je urcite mensi nez 10k spojeni, typicky radove desitky. Bottleneck je databaze, ne aplikace.

Presne tak, takze je uplne zbytecne, aby vam databaze (nebo cokoliv jineho, pomaleho) blokovalo process/threadu, kdyz se vlastne jen ceka.
Pekne jste si odpovedel, proc je asyncio dobre i pro komunikaci s databazi :-)

vykon aplikace je omezen databazi. je jedno jestli cekani na vysledek dotazu blokuje aplikacni proces, protoze databaze by stejne vic nezvladla.
Alexfa má pravdu, zřejmě absolutně nechápeš async IO, potažmo korutiny. Už se tu neztrapňuj ;)
Název: Re:Použití Python Flask v komerční sféře
Přispěvatel: nula 26. 06. 2019, 20:13:42
Ako napisal gill, taky hello world do prehliadaca je tusim na 3 riadky kodu. Zaklad Flask-u sa da pochopit za jeden den, mozno potom este chvilku trva, kym clovek dobre pochopi kontexty a pracu s nimi (Application context, Request context), ale je to naozaj jednoduche. Sqlalchemy sa s Flaskom moze, ale nemusi pouzivat, ale stoji za to s nim vediet pracovat. Dnes si uz neviem predstavit zlozitejsiu databazovu aplikaciu bez tohoto ORM.

Naopak orm se hodi na nejake primitivni weby, nedokazu si predstavit slozitejsi databazovou aplikaci s orm. To proste nikdy nefunguje. Par takovych zoufalych firem znam co to zkusilo, pak jsou radi, ze jsou schopni zaplatit nekoho, kdo je z toho bordelu vyseka.
Název: Re:Použití Python Flask v komerční sféře
Přispěvatel: uetoyo 26. 06. 2019, 20:16:03
V asynchronnim svete tu otazku musite polozit jinak: ktera SQL databaze je schopna obsluhovat 10k pripojenych klientu.

to znamena co? I v asynchronnim svete coroutiny sdili nejaky connection pool, ktery je urcite mensi nez 10k spojeni, typicky radove desitky. Bottleneck je databaze, ne aplikace.

Presne tak, takze je uplne zbytecne, aby vam databaze (nebo cokoliv jineho, pomaleho) blokovalo process/threadu, kdyz se vlastne jen ceka.
Pekne jste si odpovedel, proc je asyncio dobre i pro komunikaci s databazi :-)

vykon aplikace je omezen databazi. je jedno jestli cekani na vysledek dotazu blokuje aplikacni proces, protoze databaze by stejne vic nezvladla.
Já se async v Pythonu zatím vyhýbám, kde můžu, ale proč by pak někdo dělal asynchronní knihovnu jako tato:
https://github.com/MagicStack/asyncpg ?
Název: Re:Použití Python Flask v komerční sféře
Přispěvatel: uetoyo 26. 06. 2019, 20:20:28
Ako napisal gill, taky hello world do prehliadaca je tusim na 3 riadky kodu. Zaklad Flask-u sa da pochopit za jeden den, mozno potom este chvilku trva, kym clovek dobre pochopi kontexty a pracu s nimi (Application context, Request context), ale je to naozaj jednoduche. Sqlalchemy sa s Flaskom moze, ale nemusi pouzivat, ale stoji za to s nim vediet pracovat. Dnes si uz neviem predstavit zlozitejsiu databazovu aplikaciu bez tohoto ORM.

Naopak orm se hodi na nejake primitivni weby, nedokazu si predstavit slozitejsi databazovou aplikaci s orm. To proste nikdy nefunguje. Par takovych zoufalych firem znam co to zkusilo, pak jsou radi, ze jsou schopni zaplatit nekoho, kdo je z toho bordelu vyseka.
Moje řeč.
Název: Re:Použití Python Flask v komerční sféře
Přispěvatel: gill 26. 06. 2019, 20:25:12
V asynchronnim svete tu otazku musite polozit jinak: ktera SQL databaze je schopna obsluhovat 10k pripojenych klientu.

to znamena co? I v asynchronnim svete coroutiny sdili nejaky connection pool, ktery je urcite mensi nez 10k spojeni, typicky radove desitky. Bottleneck je databaze, ne aplikace.

Presne tak, takze je uplne zbytecne, aby vam databaze (nebo cokoliv jineho, pomaleho) blokovalo process/threadu, kdyz se vlastne jen ceka.
Pekne jste si odpovedel, proc je asyncio dobre i pro komunikaci s databazi :-)

vykon aplikace je omezen databazi. je jedno jestli cekani na vysledek dotazu blokuje aplikacni proces, protoze databaze by stejne vic nezvladla.
Já se async v Pythonu zatím vyhýbám, kde můžu, ale proč by pak někdo dělal asynchronní knihovnu jako tato:
https://github.com/MagicStack/asyncpg ?

pro přístup do databáze z asynchronních aplikací, u kterých by čekání na výsledek zablokovalo smyčku událostí, které jsou ale asynchronní z jiného důvodu, většinou kvůli socketové komunikaci. Ta knihovna stejně používá connection pool s defaultní velikostí 10.
Název: Re:Použití Python Flask v komerční sféře
Přispěvatel: alexfa 27. 06. 2019, 19:58:41
Ako napisal gill, taky hello world do prehliadaca je tusim na 3 riadky kodu. Zaklad Flask-u sa da pochopit za jeden den, mozno potom este chvilku trva, kym clovek dobre pochopi kontexty a pracu s nimi (Application context, Request context), ale je to naozaj jednoduche. Sqlalchemy sa s Flaskom moze, ale nemusi pouzivat, ale stoji za to s nim vediet pracovat. Dnes si uz neviem predstavit zlozitejsiu databazovu aplikaciu bez tohoto ORM.

Naopak orm se hodi na nejake primitivni weby, nedokazu si predstavit slozitejsi databazovou aplikaci s orm. To proste nikdy nefunguje. Par takovych zoufalych firem znam co to zkusilo, pak jsou radi, ze jsou schopni zaplatit nekoho, kdo je z toho bordelu vyseka.

No, uz jsem tady byl za kacire v jednom tematu, tak budu i v tomhle: ORM je iluze, ktera na zacatku vypada, jako dobry napad a na konci je to katastrofa ... bez vyjimky - a pisu to z vlastni zkusenosti, psal jsem vlastni ORM 2 roky.
Duvod, ktery to zpusobuje, je fakt, ze objektovy a relacni model nemaji 1:1 preklad. Je to jako preklad mezi anglictinou a cinstinou. Kdyz se to vezme slovo od slova, tak to "tak nejak" bude fungovat, ale drive ci pozdeji narazite na to, ze to nejde automaticky a musite mit nejakeho prekladatele, ktery chape vyssi vyznam (tj. sikovneho programatora).

Hodne lidi/firem nerozumi tomu, ze vetsina uloh, ktere resi ve svem software NENI relacni problem.
A presto si jako svoji databazi zvoli SQL ... protoze se to tak dela. Misto racionalni uvahy, jaka databaze je vhodna pro reseni konkretniho problemu, se automaticky saha po SQL. Kdysi jsem cetl zajimavou uvahu o tom, ze volba SQL do aplikace je necastejsi architektonicka chyba dnesni doby (single biggest mistake of software architecture).
Aby se tomu nasadila koruna, tak se obratem saha po ORM (object-to-relation mapper), coz je vlastne narovnavak na ohybak chybne vybraneho storage schematu.
Vyvijena aplikace nakoupi zeleznou kouli hned prvni den a vyvojari jsou zpomalovani prelezanim objektovo/relacni linie uprostred aplikace (aka prekladanim svych konceptu z anglictiny do cinstiny a zpet).

Volte takove databaze, ktere jsou vhodne pro vase problemy.
Pokud to nedokazete odhadnout, tak vezte, ze vas problem je objektovy, takze potrebujete objektovou databazi.
A ne, nedaji se v ni delat joiny, stejne tak, jako nedelate joiny se svymi objekty :-)
Název: Re:Použití Python Flask v komerční sféře
Přispěvatel: alexfa 27. 06. 2019, 20:00:09
V asynchronnim svete tu otazku musite polozit jinak: ktera SQL databaze je schopna obsluhovat 10k pripojenych klientu.

to znamena co? I v asynchronnim svete coroutiny sdili nejaky connection pool, ktery je urcite mensi nez 10k spojeni, typicky radove desitky. Bottleneck je databaze, ne aplikace.

Presne tak, takze je uplne zbytecne, aby vam databaze (nebo cokoliv jineho, pomaleho) blokovalo process/threadu, kdyz se vlastne jen ceka.
Pekne jste si odpovedel, proc je asyncio dobre i pro komunikaci s databazi :-)

vykon aplikace je omezen databazi. je jedno jestli cekani na vysledek dotazu blokuje aplikacni proces, protoze databaze by stejne vic nezvladla.
Já se async v Pythonu zatím vyhýbám, kde můžu, ale proč by pak někdo dělal asynchronní knihovnu jako tato:
https://github.com/MagicStack/asyncpg ?

https://github.com/aio-libs ... tohle je soubor relativne dobre vyzralych asyncio knihoven (vcetne postgres).
Název: Re:Použití Python Flask v komerční sféře
Přispěvatel: Ink 27. 06. 2019, 21:07:47
Volte takove databaze, ktere jsou vhodne pro vase problemy.
Pokud to nedokazete odhadnout, tak vezte, ze vas problem je objektovy, takze potrebujete objektovou databazi.
A ne, nedaji se v ni delat joiny, stejne tak, jako nedelate joiny se svymi objekty :-)

No já bych spíš řekl, že OOP je v mnoha případech ten hlavní problém a ne řešení.