[Програмиране] Най-бързата Python уеб рамка: wheezy.web

wheezy_web_logo

хриптене.уеб няма лого; Направих изображението в GIMP.

За дълго време спрях да програмирам в Python, но това не ми пречи да споделя с вас технологиите, които познавам;). Преди време започнах да търся "най-добрата" уеб рамка в Python, тъй като тази, която използвах (Web2Py) беше дяволски бавна. Изследванията ми ме доведоха до хриптене.уеб; тези, които го познават, със сигурност са го направили чрез грандиозен бенчмарк, направен от автора в блога му:

python-fasttest-web-framework

Знам, 25.000 XNUMX заявки в секунда в сравнение с останалите рамки това е истински пропуск. Използвах себе си хриптене.уеб за известно време и трябва да кажа, че това е истинско произведение на изкуството. Където и да го погледнете: скорост, простота, сигурност ... Всичко. И над него е дело на един-единствен човек: Андрий Корнацки.

  • Работи с Python 2, Python 3 y pypy. Дори ако 3 дава по-добра производителност, за предпочитане е да продължите да използвате 2, докато 3 стане достатъчно зрял.
  • Дизайнът му е модулна, така че хриптене.уеб са още неща: хрипте.шаблон, wheezy.html, хриптене.сигурност... Използвайте частите, които искате.
  • документация просто и лесно за разбиране.
  • Автоматична HTML оптимизация (компресира го така, че да заема по-малко, без да се използват външни инструменти).
  • Как може иначе, така е безплатен софтуер и отворен код ; Д.
  • и др ...

В блога на Андрий има страхотни уроци за instalar хриптене.уеб да изсъхне o с i18n (множество езици); също обяснява как да използвам хриптене.уеб с Nginx. Недостатъкът на всички негови уроци е това да предположим, че използвате Debian, тъй като не е тествал на други дистрибуции.

Ако използвате Fedora и се интересувате хриптене.уеб, имате късмет! Ето командата, която ще инсталира необходимите пакети, за да може да следва своите уроци:

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

Урокът, който Андрий предлага да инсталира хриптене.уеб с Nginx използва скрипт, създаден специално за Debian, така че ще трябва да го направите сами, ако използвате различна система. В моя случай uWSGI ми е достатъчен, така че никога не съм го опитвал.

Истината е, че съществуващите хриптене.уеб Намирам за престъпление използването на друга рамка, така че ако работите с Python, погледнете го най-малкото! Единственият недостатък, който може да му се припише, е, че не носи никакъв слой абстракция, за да улесни работата с базите данни (нито е необходимо, но има хора, които го оценяват).

И това е всичко. Кратка, но подходяща статия. Обещавам да донеса още интересни технологии! Ще се видим ~.

Между другото, любопитство, знаете ли защо се нарича "хриптене"? Андрий е фен на Debian. Оставям го там;).


Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

*

*

  1. Отговорен за данните: Мигел Анхел Гатон
  2. Предназначение на данните: Контрол на СПАМ, управление на коментари.
  3. Легитимация: Вашето съгласие
  4. Съобщаване на данните: Данните няма да бъдат съобщени на трети страни, освен по законово задължение.
  5. Съхранение на данни: База данни, хоствана от Occentus Networks (ЕС)
  6. Права: По всяко време можете да ограничите, възстановите и изтриете информацията си.

  1.   Бруно Касио каза той

    Ефективността не е единственият фактор. В сравнение с Django е доста нечетлив. И честно казано, 25000 заявки в секунда трябва да се видят в действие, но аз предпочитам да остана с 15000 (django), за да пиша здравословно, а останалата част от работата да се делегира на инфраструктурата, която НАИСТИНА е тази, която ще получи или не, 25000 заявки.

    Наздраве! Благодаря за данните 🙂

    1.    Бруно Касио каза той

      Излишно е да казвам, че за сравнение използвам стари версии на други рамки ...

      1.    Лайто каза той

        Бенчмарк статията е от 2012 г. Той я модифицира и разшири отново през 2013 г. и самият той уточни, че те са от тази година: «Последните налични версии към момента на писане (15 март 2013 г.)»

    2.    Лайто каза той

      Нечетливостта, която споменавате, не мисля, че е толкова лоша. Разбирам, че често се търси лекота на програмиране, но не мисля, че наистина има значителни разлики. Използвах Web2Py за една година и ви уверявам, че това е една от най-лесните за използване рамки. Разбира се, представянето му е ужасно в много отношения ... В статията за еталон самият Масимо Ди Пиеро (създателят на Web2Py) води дебат с Андрий, в който накрая признава, че има какво да се подобри; говорейки с Андрий по IRC, той ми каза "има широко приета философия да се поставя всичко в рамки и да се раздува с функции, дори повечето да не се използват", и колко прав е бил ...

      Относно това, което казвате за инфраструктурата, споделям частично това, което казвате; Разликата от 10.000 2 е МНОГО, особено когато говорим за най-популярната и зряла рамка спрямо съвсем скорошната и малко известна. Моят подход винаги е да комбинирам максимална ефективност с максимална производителност и мисля, че wheezy.web прави това най-добре. Използвал съм Web2Py (най-много), Django, Pyramid и wheezy.web и ви уверявам, че е ненадминат. След като се адаптирате към начина му на правене на нещата, не се откъсвате от него. Единствените предимства на Django са голямата общност, която има, и ресурсите, които са из целия Интернет; тоест: лекота. wheezy.web е сравнително нов в сравнение и много малко хора знаят за него; ако отидете лесно, по-добре WebXNUMXPy или Django xD.

      Не искам да разширявам, но когато говорим за заявки в секунда, говорим за съвпадение. Ако се търси съвпадение, Python не е подходящият език. За това са предназначени други езици като Erlang или Haskell (и ако ме побързате, Rust). Но точно поради тази причина е впечатляващо, че wheezy.web, заемащ толкова малко код, като е дело на човек в свободното си време и други фактори, е успял да постигне такова представяне.

      Разбирам какво казвате за „здравословно писане“, но никога не знаете колко може да се развие един проект в дългосрочен план. Използвайки по-ефективни и едновременни инструменти, както и прости (поддържам, че wheezy.web е лесен за изпълнението, което има), спестявате пари и правите мащаба на проекта за по-дълго, без да променяте езика. В крайна сметка всичко е в парите, които човек трябва да плати за своя сървър. Има много известни уебсайтове в PHP, когато PHP е ужасно ефективен ... Но как решавате този проблем? Купуване на по-добри сървъри. С другия подход той се решава чрез по-добро програмиране и спестяване на ресурси: P.

      Съжалявам, че се удължих толкова много. Много лесно съм запален по xDDD. Наздраве!

      1.    Бруно Касио каза той

        Разбрах отлично какво имате предвид, но точно поради това, което споменавате, ако даден проект има тенденция да се развива или не, тъй като ние вървим с хриптене, няма слой от база данни.

        Според мен е най-добре да не се жениш за никой език. Ако искате паралелност, можете да използвате и Node, двигателят му работи в C.

        Това, което споменавате за производителността, не е просто мащабиране вертикално (случаят с PHP), Facebook например предлага HHVM, който съм чел (не е тестван), който подобрява производителността с 50% и това не е закупуване на сървъри. Най-просто казано, PHP без кеш слоеве и / или други начини за оптимизиране е толкова "лош", колкото всеки друг език без последния, и имам предвид лошо да им се даде име, не е просто "по-добро програмиране".

        Наздраве! 🙂

      2.    Лайто каза той

        Нека видим, това, което няма, е слой абстракция. Но вие използвате съответната библиотека или модул за работа с вашата база данни и извън нея, няма повече мистерия. Например слойът за абстракция Web2Py е много прост, но производителността намалява драстично, тъй като дори не можете да пишете оптимизиран SQL. Всичко е в Python; лесно, но в замяна на изпълнение.

        Знам HHVM и точно затова езици като PHP са ужасни за съвременността; ако Facebook беше в Haskell или Erlang, нямаше да е необходимо да се създава HHVM. Използвайте кеш, компресирайте файлове, които се изпращат и получават и т.н. те са очевидни аспекти на всяко развитие. Въпросът е, че инструментът трябва да измери :). И има инструменти, които не го предоставят. Най-добрият пример за това е JavaScript ... В такъв случай поне има чудеса като CoffeeScript, Dart и т.н. които се компилират в JS.

        ¡Saludos!

      3.    Бруно Касио каза той

        Перфектно! 🙂

        Само едно нещо, facebook, ако използвате haskell, по-точно Haxl 🙂

      4.    Спиране каза той

        Е, аз използвам web2py много, съгласен съм, че това не е най-бързата рамка, но този бенчмарк изглежда малко неуместен, още повече, когато говорим за преди 3 години, здравото тъпо приложение на web2py е много натоварено в сравнение към други рамки, но честно казано не съм изпитвал тази ужасна разлика в производителността между моите приложения, написани в web2py и django.

        Между другото, в web2py, ако можете да напишете SQL, за да изпълнявате директно заявките.

        Поздрави.

  2.   urKh каза той

    Най-бързата уеб рамка, която казвате, но не показвате никакъв пример и други ключови фактори, като разработка, производителност, документация. Със съществуващото django не знам защо изглежда да е престъпление да не се използва това: p

    1.    Лайто каза той

      - В документацията вече има примери. На неговата страница BitBucket също: https://bitbucket.org/akorn/wheezy.web/src/tip/demos/
      - Що се отнася до развитието и производителността, аз лично смятам, че обобщаването му в „простота“ е добър вариант. Кои са все още по-опростените и лесни рамки? Ясно. Но не с толкова много производителност.
      - Поставих линка към документацията в статията xDDD.
      - Защо казвам, че е престъпление, е защото вярвам, че уеб страницата трябва да бъде възможно най-ефективна във всяко отношение. Както споменах преди, има рамки, по-лесни за използване, но използването на wheezy.web също не е програмиране на C. Просто трябва да се опитате повече :).

      Поздрави ^^.

  3.   Лайто каза той

    Между другото, в случай че някой е мързелив да разбере и смята, че Wheezy Web печели само в заявки в секунда ... Ето още няколко критерии:

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

    Извинявам се, че не съм ги включил преди това. Мислех, че един е достатъчен, за да привлече любопитство xD. Наздраве!

  4.   Фенриз каза той

    Засега доволен от Джанго.

    1.    Оклай каза той

      Ехх, всеки път, когато чета тези неща, ме ядосва, мислех, че е само с php рамки (Symfony, Yii, CondeIgniter, Phalcon ……… wdf !!). Ако Django вече има общност (доста голяма) и е отлична рамка, защо вместо да губите време да преоткривате колелото, не се присъединявайте към екипа на django. @ Lajto във вашия разговор с автора на wheezy.web защо не го попитате дали никога не сте мислили да се присъедините към екипа на django, по дяволите. Наздраве ..

      1.    Лайто каза той

        Въпреки че и двете са уеб рамки, те имат много различни подходи. Django е тежък, има много код, докато wheezy.web е лек, той се ангажира с простота и оптимизация. Доколкото ми е известно, wheezy.web е единствената наистина модулна уеб рамка на Python (т.е. тя разделя целия си код на различни части, които могат да работят независимо). Той има много характеристики, които го отличават от останалите.

        Защо не се присъедините към Django, казвате? Защото Django е проектиран с напълно различни подходи. Как прилагате модулен дизайн към Django? Би трябвало да се преработи практически от нулата! Същото е и с много други въпроси.

        Разбирам, че чувството „по-добре една рамка, която работи добре с голяма общност“, но не е толкова лесно. Така че разбирате, като прави повърхностна асоциация, Django е като Debian, а wheezy.web като ... Arch? Gentoo? Определено е лош пример, но мисля, че xDDD се разбира.

        ¡Saludos!

  5.   Ulises каза той

    Какво ще кажете за Lajto, ей, правя приложение и прочетох документацията на wheezy.web и това е първата фреймворка на python, която разбрах за първи път 🙂 Виждате ли, нямам много познания за мрежите и мрежата, но аз имат специално влечение към програмирането.
    Бихте ли ми помогнали как да модифицирам здравей света, за да го направя публичен сървър? Може би това е много глупав въпрос, съжалявам, но не мога да намеря в документацията как да го направя.
    Друг въпрос, 😉 в методите get и post, тъй като връщам информация, която не е html страница, връщам ли информацията такава, каквато е? като низ или списък или всякакъв вид данни. Клиентът е приложение в android.

    1.    Лайто каза той

      Здравейте Ulises! Толкова се радвам, че тествате wheezy.web: D.

      По отношение на това, което коментирате, силно препоръчвам да не монтирате собствена структура. Този, който Андрий кара, е доста добър, затова препоръчвам да го следвате. В статията има две връзки към блога на Андрий, където той обяснява стъпките с i18n и без i18n. В случай, че е малко объркващо, ще обясня как да го направите без i18n по-долу:

      Отворете терминал и изпълнете тези четири команди (заменете "test-web" с името на папката, която искате за вашия проект):

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

      разархивирайте quickstart-empty.zip

      mv quickstart-empty test-web

      rm quickstart-empty.zip

      Ако искате да използвате PIL, модифицирайте файла setup.py и коментирайте съответния код. След като сте готови, изпълнете следните три команди:

      web-test-cd

      направи env

      env / bin / easy_install uwsgi

      Вашият сървър вече е монтиран. Ако искате да направите бърз бенчмарк, за да видите дали работи, като сте в папката, стартирате:

      направете тест тест за покритие на носа

      Препоръчвам ви да отидете на "etc / development.ini" и да промените "limit-as = 120" на "limit-as = 512". Това е колко MB RAM RAM ще изяде uWSGI, така че може да се увеличи в бъдеще, ако е необходимо.

      И накрая, всеки път, когато искате да отворите сървъра си, би било достатъчно да се локализирате в папката на проекта си и да изпълните:

      направи uwsgi

      По останалите въпроси ... По подразбиране сървърът е програмиран да работи на localhost. Ако искате да го направите публично достъпен, защото вече го имате и искате да го използвате на физически сървър в производство, просто отворете "src / app.py" и намерете следното: make_server (", 8080, main). Първият параметър е празен низ, нали? Е, там поставяте IP на вашия сървър. Вторият параметър е портът, който искате да използвате, който по подразбиране е 8080.

      И накрая, това, което казвате за връщане на нещо различно от HTML, разбира се, че можете! В документацията те обясняват как да върнете всичко: https://pythonhosted.org/wheezy.web/userguide.html#web-handlers

      Поздрав! Всичко, което ми кажете;).

      1.    Ulises каза той

        Благодаря ви много Lajto, наистина изяснихте съмненията ми, опитах се с django, но както ви казах, не съм системен инженер и django, мисля, че носи много повече от това, от което се нуждаех android и го комуникирайте със сървър. Нещо много просто, но доста бързо и практично. Ей още един въпрос, наскоро видях, че имаше голям шум с http / 2, как да разбера по какъв протокол работи wheezy.web? Мога ли да направя сървър, който използва http / 2 в wheezy.web? Или ми препоръчайте книга, блог, урок, който е в блокове, които могат да обяснят целия въпрос на мрежите и комуникациите. Благодаря отново.

      2.    Лайто каза той

        Здравейте отново Ulises ^^.

        HTTP / 2 е много скорошен и няма да бъде приет сериозно още 1 година, така че не се занимавайте с него :). Ако искате сигурност, използвайте HTTPS и това е всичко.

        Не съм сигурен какво Wheezy Web използва за HTTP, така че предполагам, че ще бъде WSGI.

        Поздрави!

  6.   Лайто каза той

    Между другото, малко нещо от нищо. На някои дистрибуции се появява ПРЕДУПРЕЖДЕНО съобщение за .python-egg. Нищо не се случва, ако се появи, но ако ви притеснява, можете да го премахнете с:

    chmod go = ~ / .python-яйца

    ¡Saludos!

  7.   Диего каза той

    Използвам Django, но ще проверя документацията, за да видя как работи. Благодаря за споделянето. Наздраве

  8.   Джей Ди Вилегас каза той

    Може да се използва от windows !!!, има ли урок ??

    благодаря

  9.   Лалита каза той

    Здравейте, имаме много опит с Python. Струва ми се, че гребят срещу течението. Най-доброто нещо, измислено някога за този език, е Django. Те могат да направят статистика и да се консултират със стотици програмисти от цял ​​свят, това ще ви даде повече от 80%, повечето от тях не грешат. Ако гребят или плуват срещу течението, рано или късно ще се удавят ...