[Програмування] Найшвидший веб-фреймворк Python: wheezy.web

wheezy_web_logo

хрипкий.веб він не має логотипу; Я зробив зображення в GIMP.

Я давно перестав програмувати на Python, але це не заважає мені ділитися з вами технологіями, які я знаю;). Деякий час тому я зайнявся пошуком "найкращого" веб-фреймворка в Python, оскільки той, який я використовував (Web2Py), був диявольськи повільним. Моє дослідження привело мене до хрипкий.веб; ті, хто його знає, напевно зробили це через вражаючий орієнтир, зроблений автором у своєму блозі:

python-швидкий-веб-фреймворк

Я знаю, 25.000 XNUMX запитів на секунду порівняно з рештою фреймворків це справжній прохід. Я сам використовував хрипкий.веб на деякий час, і я повинен сказати, що це справжній витвір мистецтва. Куди не подивишся: швидкість, простота, безпека ... Все. А над цим - робота однієї людини: Андрія Корнацького.

  • Працює с Python 2, Python 3 y pypy. Навіть якщо 3 дає кращі показники, переважно продовжувати використовувати 2, поки 3 не стане дозрілим.
  • Його конструкція така модульнийТак, що хрипкий.веб є ще речі: хрипкий. шаблон, wheezy.html, хрипкий.безпека... Використовуйте потрібні деталі.
  • документація простий і зрозумілий.
  • Автоматична оптимізація HTML (стискає так, щоб зайняти менше місця без використання зовнішніх інструментів).
  • Як могло бути інакше, це так вільне програмне забезпечення та відкритий код ; D.
  • і т.п ...

У блозі Андрія є чудові підручники для встановлювати хрипкий.веб сушити 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 не є відповідною мовою. Для цього й призначені інші мови, такі як Ерланг чи Хаскелл (і якщо ти поспішиш мене, Руст). Але саме з цієї причини вражає те, що 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.

        Привіт!

      3.    Бруно Касьо - сказав він

        Ідеально! 🙂

        Тільки одне, facebook, якщо ви використовуєте haskell, точніше Haxl 🙂

      4.    Cesar - сказав він

        Ну, я багато використовую web2py, я згоден, що це не найшвидший фреймворк, але цей орієнтир здається дещо недоречним, тим більше, коли ми говоримо про 3 роки тому, привіт німий додаток web2py дуже завантажений у порівнянні з інших фреймворків, але я, чесно кажучи, не відчував цієї жахливої ​​різниці у продуктивності між моїми програмами, написаними на web2py та django.

        До речі, у web2py, якщо ви можете написати SQL для безпосереднього виконання запитів.

        Привіт.

  2.   урХ - сказав він

    Ви говорите про найшвидший веб-фреймворк, але ви не показуєте жодного прикладу та інших ключових факторів, таких як розробка, продуктивність, документація. З існуючим 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 (спам-фільтр DesdeLinux Це не дозволить мені поставити стільки посилань)

    Перепрошую, що не включав їх раніше. Я думав, що цього достатньо, щоб зацікавити xD. На здоров’я!

  4.   Fenriz - сказав він

    Поки що задоволений Джанго.

    1.    Оклай - сказав він

      Ех, щоразу, коли я читаю ці речі, це мене розлючує, я думав, що це стосується лише фреймворків php (Symfony, Yii, CondeIgniter, Phalcon ……… wdf !!). Якщо Django вже має спільноту (досить велику) і є чудовим фреймворком, чому замість того, щоб витрачати час на винахід колеса, не приєднуйтесь до команди django. @ Lajto у вашій розмові з автором wheezy.web, чому б вам не запитати його ви ніколи не думали про приєднання до команди джанго, блін.

      1.    Лайто - сказав він

        Хоча обидва є веб-фреймворками, вони мають дуже різні підходи. Django важкий, він має багато коду, тоді як wheezy.web легкий, він прагне простоти та оптимізації. Наскільки мені відомо, wheezy.web - це єдина справді модульна веб-структура Python (тобто вона розділяє весь ваш код на різні частини, які можуть працювати незалежно). Він має багато характеристик, які відрізняють його від решти.

        Чому б вам не приєднатися до Джанго, скажете ви? Тому що Django був розроблений із абсолютно різними підходами. Як застосувати модульний дизайн до Django? Його довелося б переробляти практично з нуля! Те саме з багатьма іншими проблемами.

        Я розумію, що "краще єдиний фреймворк, який добре працює з великою спільнотою", але це не так просто. Отже, ви розумієте, створюючи поверхневу асоціацію, Django наче це Debian і wheezy.web, ніби це було ... Арка? Gentoo? Це, безумовно, поганий приклад, але я думаю, що xDDD зрозумілий.

        Привіт!

  5.   Ulises - сказав він

    Як щодо Lajto, привіт, я роблю додаток, і я читаю документацію wheezy.web, і це перший веб-фреймворк python, який я зрозумів вперше 🙂 Розумієте, я не маю великих знань про мережі та Інтернет, але я мають особливий потяг до програмування.
    Не могли б ви допомогти мені, як змінити світ hello, щоб зробити його загальнодоступним сервером? Можливо, це дуже безглузде питання, вибачте, але я не можу знайти в документації, як це зробити.
    Інше питання, 😉 у методах get і post, оскільки я повертаю інформацію, яка не є HTML-сторінкою, чи повертаю я інформацію як є? як рядок, список чи будь-який тип даних. Клієнт додаток в android.

    1.    Лайто - сказав він

      Привіт Улісес! Я дуже рада, що ви тестуєте 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". Саме стільки МБ оперативної пам’яті 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, я думаю, це приносить набагато більше, ніж те, що мені потрібно, використовуй wheezy.web для тестування програми android та обмінюватися ним із сервером. Щось дуже просте, але досить швидке і практичне. Ей, ще одне запитання, нещодавно я побачив, що з http / 2 була велика суєта, звідки я знаю, на якому протоколі працює wheezy.web? Чи можу я зробити сервер, який використовує http / 2 у wheezy.web? Або порекомендуйте мені книгу, щоденник, навчальний посібник, що складається з блоків, які можуть пояснити всю суть мереж та комунікацій. Знову дякую.

      2.    Лайто - сказав він

        Знову привіт Улісес ^^.

        HTTP / 2 є зовсім недавнім і його не прийматимуть серйозно протягом 1 року, тому не турбуйтеся цим :). Якщо ви хочете безпеки, використовуйте HTTPS і все.

        Я не впевнений, що Wheezy Web використовує для HTTP, тому я припускаю, що це буде WSGI.

        Привітання!

  6.   Лайто - сказав він

    До речі, трохи чогось нічого. На деяких дистрибутивах з'являється ПОПЕРЕДЖЕННЯ про .python-egg. Нічого не трапляється, якщо воно з’являється, але якщо це вас дратує, ви можете видалити його за допомогою:

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

    Привіт!

  7.   Дієго - сказав він

    Я використовую Django, але я перевірю документацію, щоб побачити, як це працює. Дякую, що поділились. Ура

  8.   Дж.Д.Віллегас - сказав він

    Його можна використовувати з вікон !!!, чи є підручник ??

    Грекіас

  9.   Лаліта - сказав він

    Привіт, ми маємо великий досвід роботи з Python. Мені здається, вони веслують проти течії. Найкраще, що коли-небудь було винайдено для цієї мови - це Django. Вони можуть скласти статистичні дані та проконсультуватися з сотнями програмістів з усього світу, це дасть вам більше 80%, більшість з них не помиляються. Якщо вони будуть гребти або плисти проти течії, рано чи пізно вони потонуть ...