[Programování] Nejrychlejší webový rámec Pythonu: wheezy.web

wheezy_web_logo

sípavý.web nemá žádné logo; Obrázek jsem vytvořil v GIMPu.

Na dlouhou dobu jsem přestal programovat v Pythonu, ale to mi nebrání ve sdílení technologií, které znám, s tebou;). Před časem jsem se pustil do hledání „nejlepšího“ webového rámce v Pythonu, protože ten, který jsem použil (Web2Py), byl sakra pomalý. Můj výzkum mě k tomu vedl sípavý.web; ti, kteří ho znají, to určitě udělali prostřednictvím velkolepé měřítko vytvořené autorem na jeho blogu:

python-nejrychlejší-web-framework

Vím, 25.000 XNUMX požadavků za sekundu ve srovnání se zbytkem rámců je to skutečný průchod. Já sám jsem použil sípavý.web na chvíli a musím říct, že je to skutečné umělecké dílo. Kamkoli se podíváte: rychlost, jednoduchost, bezpečnost ... Všechno. A nad tím je dílem jediné osoby: Andriy Kornatskyy.

  • Funguje to s Python 2, Python 3 y pypy. I když 3 dává lepší výkon, je lepší pokračovat v používání 2, dokud není 3 dostatečně zralý.
  • Jeho design je modulární, tak sípavý.web jsou více věcí: pískot. šablona, wheezy.html, bezpečnost… Použijte požadované součásti.
  • dokumentace jednoduché a snadno pochopitelné.
  • Automatická optimalizace HTML (komprimuje jej tak, aby bez použití externích nástrojů zabral méně).
  • Jak by to mohlo být jinak? svobodný software a otevřený zdroj ; D.
  • atd ...

Na blogu Andriy jsou skvělé návody pro instalovat sípavý.web vysušit o s i18n (více jazyků); také vysvětluje jak používat sípavý.web s Nginx. Nevýhodou všech jeho výukových programů je to Předpokládejme, že používáte Debian, protože netestoval na jiných distribucích.

Pokud používáte Fedora a máte zájem sípavý.web, máte štěstí! Zde je příkaz, který nainstaluje nezbytné balíčky, aby bylo možné sledovat jeho výukové programy:

sudo dnf install python python-devel python3 python3-devel python-setuptools python-virtualenv libxml2 libxml2-devel libxslt libxslt-devel libmemcached libmemcached-devel memcached memcached-devel gzip ntpdate gettext uwsgi uwsgi-plugin-python socat nginx

Výukový program, který Andriy nabízí k instalaci sípavý.web s Nginx používá skript navržený speciálně pro Debian, takže budete muset udělat sami, pokud používáte jiný systém. V mém případě mi stačí uWSGI, takže jsem to nikdy nezkoušel.

Pravda je, že existuje sípavý.web Považuji použití jiného rámce za zločin, takže pokud pracujete s Pythonem, podívejte se na to přinejmenším! Jedinou nevýhodou, kterou mu lze přičíst, je to, že nepřináší žádnou vrstvu abstrakce, která by usnadnila práci s databázemi (ani to nemusí, ale existují lidé, kteří to oceňují).

A to je vše. Krátký, ale relevantní článek. Slibuji, že přinesu více zajímavých technologií! Uvidíme se ~.

Mimochodem, kuriozita, víte, proč se tomu říká „pískání“? Andriy je fanouškem Debianu. Nechávám to tam;).


Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Odpovědný za údaje: Miguel Ángel Gatón
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.

  1.   Bruno cascio řekl

    Výkon není jediným faktorem. Ve srovnání s Django je to docela nečitelné. Upřímně řečeno, 25000 15000 žádostí za sekundu by mělo být vidět v akci, ale já raději zůstanu s 25000 XNUMX (django), abych psal zdravě, a zbytek práce deleguje na infrastrukturu, což je SKUTEČNĚ ten, který přijme nebo ne, XNUMX XNUMX žádostí.

    Pozdravy! Díky za data 🙂

    1.    Bruno cascio řekl

      Není nutné říkat, že pro srovnání používám staré verze jiných frameworků ...

      1.    lajto řekl

        Referenční článek je z roku 2012. V roce 2013 jej znovu upravil a rozšířil a sám upřesnil, že jsou z tohoto roku: «Poslední dostupné verze k tomuto psaní (15. března 2013)»

    2.    lajto řekl

      Nečitelnost, kterou zmiňujete, si nemyslím, že je tak špatná. Chápu, že se často hledá snadné programování, ale nemyslím si, že existují opravdu značné rozdíly. Web2Py jsem používal rok a ujišťuji vás, že je to jeden z nejjednodušších dostupných rámců. Jeho výkon je samozřejmě v mnoha ohledech příšerný ... V referenčním článku sám Massimo Di Pierro (tvůrce Web2Py) vede debatu s Andriyem, ve které nakonec připouští, že je co zlepšovat; když mluvil s Andriyem na IRC, řekl mi „existuje široce přijímaná filozofie dát vše do rámců a nafouknout je funkcemi, i když se většina nepoužívá“, a jak správně měl ...

      O tom, co říkáte o infrastruktuře, částečně sdílím to, co říkáte; 10.000 2 rozdílů je MNOHO, zvláště když mluvíme o nejpopulárnějším a nejzralejším rámci oproti velmi nedávnému a málo známému. Mým přístupem je vždy kombinovat maximální efektivitu s maximální produktivitou a myslím, že Wheezy.web to dělá nejlépe. Použil jsem Web2Py (nejvíce), Django, Pyramid a wheezy.web a ujišťuji vás, že je bezkonkurenční. Jakmile se přizpůsobíte jeho způsobu, jakým dělá věci, neoddělíte se od něj. Jedinou výhodou Djanga je velká komunita, kterou má, a zdroje, které jsou na celém internetu; to znamená: lehkost. wheezy.web je ve srovnání poměrně nový a jen velmi málo lidí o tom ví; pokud jdeš snadno, lepší WebXNUMXPy nebo Django xD.

      Nechci se rozšiřovat, ale když mluvíme o požadavcích za sekundu, mluvíme o souběžnosti. Pokud se hledá souběžnost, Python není vhodný jazyk. K tomu jsou další jazyky jako Erlang nebo Haskell (a pokud mě pospíšíte, Rust). Ale právě z tohoto důvodu je působivé, že Wheezy.web, který zabírá tak málo kódu a je prací člověka ve svém volném čase a řadou dalších faktorů, dokázal dosáhnout takového výkonu.

      Rozumím tomu, co říkáte o „zdravém psaní“, ale nikdy nevíte, jak moc může projekt dlouhodobě růst. Pomocí efektivnějších a souběžných nástrojů, stejně jako jednoduchých (tvrdím, že Wheezy.web je jednoduchý pro výkon, který má), ušetřete peníze a zvětšete měřítko projektu déle bez změny jazyka. Nakonec vše je v penězích, které člověk musí zaplatit za svůj server. V PHP existují velmi známé webové stránky, jejichž výkon je hrozný ... Ale jak tento problém vyřešit? Nákup lepších serverů. U druhého přístupu je to vyřešeno lepším programováním a úsporou zdrojů: P.

      Omlouvám se, že jsem se tolik rozšířil. Jsem velmi snadno vášnivý pro xDDD. Na zdraví!

      1.    Bruno cascio řekl

        Dokonale jsem pochopil, co máte na mysli, ale právě kvůli tomu, co zmiňujete, pokud má projekt tendenci růst nebo ne, protože jdeme s pískáním, neexistuje žádná databázová vrstva.

        Z mého pohledu je nejlepší nevdávat se za žádný jazyk. Pokud chcete souběžnost, můžete také použít Node, jeho motor běží v C.

        To, co zmiňujete o výkonu, není jen vertikální škálování (v případě PHP), například Facebook nabízí HHVM, který jsem četl (netestováno) a který zvyšuje výkon o 50% a to nekupuje servery. Jednoduše řečeno, PHP bez vrstev mezipaměti a / nebo jiných způsobů optimalizace je stejně „špatné“ jako jakýkoli jiný jazyk bez druhého a myslím špatně, když jim řeknu jméno, není to jen „lepší programování“.

        Na zdraví! 🙂

      2.    lajto řekl

        Uvidíme, co tam není, je vrstva abstrakce. Ale používáte odpovídající knihovnu nebo modul pro práci s vaší databází i mimo ni, už tu není žádné tajemství. Například abstrakční vrstva Web2Py je velmi jednoduchá, ale výkon dramaticky klesá, protože nemůžete ani psát optimalizované SQL. Všechno je v Pythonu; snadné, ale na oplátku za výkon.

        Znám HHVM a právě proto jsou jazyky jako PHP pro moderní dobu hrozné; kdyby byl Facebook v Haskellu nebo Erlangu, nebylo by nutné vytvářet HHVM. Použijte mezipaměť, komprimujte odesílané a přijímané soubory atd. jsou to zjevné aspekty každého vývoje. Jde o to, že tento nástroj musí měřit :). A existují nástroje, které to nedávají. Nejlepším příkladem je JavaScript ... V takovém případě existují alespoň zázraky jako CoffeeScript, Dart atd. které kompilují do JS.

        Zdravím!

      3.    Bruno cascio řekl

        Perfektní! 🙂

        Jen jedna věc, facebook, pokud používáte haskell, přesněji Haxl 🙂

      4.    Přestat řekl

        No, hodně používám web2py, souhlasím, že to není nejrychlejší framework, ale ten benchmark se zdá být trochu na místě, o to více, když mluvíme o před 3 lety, ahoj hloupá aplikace web2py je velmi nabitá ve srovnání na jiné rámce, ale upřímně jsem nezažil ten propastný rozdíl ve výkonu mezi mými aplikacemi napsanými v web2py a django.

        Mimochodem, ve web2py, pokud můžete psát SQL k provádění dotazů přímo.

        Zdravím.

  2.   urKh řekl

    Nejrychlejší webový rámec, který řeknete, ale neukážete žádný příklad a další klíčové faktory, jako je vývoj, produktivita, dokumentace. Když existuje django, nevím, proč se zdá být zločinem toto nepoužívat: str

    1.    lajto řekl

      - V dokumentaci jsou již příklady. Na jeho stránce BitBucket také: https://bitbucket.org/akorn/wheezy.web/src/tip/demos/
      - Pokud jde o vývoj a produktivitu, osobně si myslím, že shrnutí do „jednoduchosti“ je dobrá volba. Jaké jsou dosud jednodušší a jednodušší rámce? Tak určitě. Ale ne s tak velkým výkonem.
      - Odkaz na dokumentaci jsem vložil do článku xDDD.
      - Proč říkám, že jde o trestný čin, je to proto, že se domnívám, že webová stránka by měla být v každém ohledu co nejúčinnější. Jak jsem již zmínil, existují rámce, které se snáze používají, ale použití Wheezy.web není ani programování v C. Prostě se musíte snažit :).

      Zdravím ^ ^.

  3.   lajto řekl

    Mimochodem, pokud je někdo líný zjistit a myslí si, že Wheezy Web vyhrává pouze v požadavcích za sekundu ... Zde je několik dalších měřítek:

    http://paste.desdelinux.net/5128 (el filtro de spam de DesdeLinux no me deja poner tantos links)

    Omlouvám se za to, že jsem je dříve nezahrnul. Myslel jsem, že jeden stačí k tomu, aby nakreslil zvědavost xD. Na zdraví!

  4.   fenriz řekl

    Zatím spokojený s Djangem.

    1.    jíl řekl

      No, pokaždé, když jsem si přečetl tyto věci, rozčiluje mě to, myslel jsem si, že to bylo jen s php frameworky (Symfony, Yii, CondeIgniter, Phalcon ……… wdf !!). Pokud Django již má komunitu (poměrně velkou) a je vynikajícím rámcem, proč se místo plýtvání časem s objevováním kola nepřipojujte k týmu django. @ Lajto ve svém rozhovoru s autorem Wheezy.web, proč se ho nezeptáte Pokud nikdy jsi nepřemýšlel o vstupu do týmu django, sakra. Na zdraví ..

      1.    lajto řekl

        Ačkoli oba jsou webové rámce, mají velmi odlišné přístupy. Django je těžký, má spoustu kódu, zatímco wheezy.web je lehký, zavazuje se k jednoduchosti a optimalizaci. Pokud je mi známo, wheezy.web je jediný skutečně modulární webový rámec Pythonu (to znamená, že rozděluje veškerý svůj kód na různé části, které mohou fungovat samostatně). Má mnoho vlastností, které ji odlišují od ostatních.

        Proč se nepřipojit k Djangovi? Protože Django bylo navrženo s úplně jinými přístupy. Jak aplikujete modulární design na Django? To by muselo být přepracováno prakticky od nuly! Totéž s mnoha dalšími problémy.

        Chápu, že „lepší jednotný rámec, který funguje dobře s velkou komunitou“, ale není to tak snadné. Jen abyste pochopili, že Django vytvořením povrchní asociace vypadá, jako by to byl Debian a wheezy.web, jako by to byl ... Arch? Gentoo? Je to určitě špatný příklad, ale myslím, že xDDD je pochopeno.

        Zdravím!

  5.   Ulises řekl

    A co Lajto, hej, dělám aplikaci a četl jsem si dokumentaci wheezy.web a je to první webový rámec pythonu, kterému jsem porozuměl poprvé 🙂 Víte, nemám moc znalostí sítí a webu, ale Mám zvláštní přitažlivost k programování.
    Můžete mi pomoci, jak upravit svět ahoj, aby se stal veřejným serverem? Možná je to velmi hloupá otázka, omlouvám se, ale nemohu najít v dokumentaci, jak to udělat.
    Další otázka, 😉 v metodách get a post, když vracím informace, které nejsou html stránkou, vracím informace tak, jak jsou? jako řetězec nebo seznam nebo jakýkoli typ dat. Klient aplikace v systému Android.

    1.    lajto řekl

      Ahoj Ulises! Jsem tak ráda, že testujete pískání. Web: D.

      O tom, co komentujete, velmi doporučuji, abyste nepřipojovali vlastní strukturu. Ten, na kterém jezdí Andriy, je docela dobrý, takže vám doporučuji, abyste se jím řídili. V článku jsou dva odkazy na Andriyův blog, kde vysvětluje kroky s i18n a bez i18n. V případě, že je to trochu matoucí, vysvětlím níže, jak to udělat bez i18n:

      Otevřete terminál a spusťte tyto čtyři příkazy (nahraďte „test-web“ názvem složky, kterou chcete pro svůj projekt):

      wget https://bitbucket.org/akorn/wheezy.web/downloads/quickstart-empty.zip

      rozbalte quickstart-empty.zip

      mv rychlý start-prázdný testovací web

      rm quickstart-empty.zip

      Chcete-li použít PIL, upravte soubor setup.py a odkomentujte odpovídající kód. Jakmile jste připraveni, spusťte následující tři příkazy:

      web-test-cd

      udělat env

      env / bin / easy_install uwsgi

      Váš server je již připojen. Pokud chcete udělat rychlý test, abyste zjistili, zda to funguje, když jste uvnitř složky, spustíte:

      proveďte test měřítka krytu nosu

      Doporučuji vám přejít na „etc / development.ini“ a změnit „limit-as = 120“ na „limit-as = 512“. To je to, kolik MB RAM uWSGI "sníží", takže by to mohlo být v budoucnu v případě potřeby zvýšeno.

      Nakonec pokaždé, když chcete otevřít svůj server, by stačilo najít se ve složce projektu a spustit:

      udělat uwsgi

      Na další otázky ... Ve výchozím nastavení je server naprogramován tak, aby běžel na localhost. Pokud ji chcete zveřejnit, protože ji již máte připravenou a chcete ji použít na fyzickém serveru ve výrobě, otevřete soubor „src / app.py“ a vyhledejte následující: make_server (", 8080, main). První parametr je prázdný řetězec, že? Sem umístíte IP vašeho serveru. Druhým parametrem je port, který chcete použít, což je ve výchozím nastavení 8080.

      A konečně, co říkáte na vrácení něčeho jiného než HTML, samozřejmě může! V dokumentaci vysvětlují, jak vše vrátit: https://pythonhosted.org/wheezy.web/userguide.html#web-handlers

      Pozdrav! Cokoli mi řekneš;).

      1.    Ulises řekl

        Děkuji mnohokrát Lajto, opravdu jsi objasnil mé pochybnosti, zkusil jsem to s django, ale jak jsem ti řekl, nejsem systémový inženýr a django si myslím, že přináší mnohem víc, než jsem potřeboval, pomocí aplikace Wheezy.web otestujte aplikaci v systému Android a komunikovat se serverem. Něco velmi jednoduchého, ale docela rychlého a praktického. Ahoj ještě jedna otázka, nedávno jsem viděl, že došlo k velkému rozruchu s http / 2, jak poznám, na kterém protokolu funguje Wheezy.web? Mohu vytvořit server, který používá http / 2 v Wheezy.web? Nebo doporučte knihu, blog, výukový program, který je v blocích a který vysvětluje celou problematiku sítí a komunikace. Ještě jednou děkuji.

      2.    lajto řekl

        Ahoj znovu Ulises ^ ^.

        HTTP / 2 je velmi nedávný a nebude vážně přijat další 1 rok, takže se s ním neobtěžujte :). Pokud chcete zabezpečení, použijte HTTPS a je to.

        Nejsem si jistý, co Wheezy Web používá pro HTTP, takže předpokládám, že to bude WSGI.

        Zdravím!

  6.   lajto řekl

    Mimochodem, něco málo. Na některých distribucích se objeví VAROVÁNÍ o .python-eggs. Pokud se objeví, nic se nestane, ale pokud vám připadá nepříjemné, můžete jej odstranit pomocí:

    chmod go = ~ / .python-eggs

    Zdravím!

  7.   Diego řekl

    Používám Django, ale zkontroluji dokumentaci a zjistím, jak to funguje. Děkuji za sdílení. Na zdraví

  8.   JD Villegas řekl

    Lze jej použít z Windows !!!, existuje návod?

    díky

  9.   lalita řekl

    Ahoj, máme spoustu zkušeností s Pythonem. Zdá se mi, že veslují proti proudu. Nejlepší věc, kterou kdy pro tento jazyk vymysleli, je Django. Mohou vytvářet statistiky a konzultovat stovky programátorů z celého světa, dá vám to více než 80%, většina z nich se nemýlí. Pokud veslují nebo plavou proti proudu, dříve nebo později se utopí ...