[Pengaturcaraan] Rangka kerja web Python terpantas: wheezy.web

wheezy_web_logo

wheezy.web ia tidak mempunyai logo; Saya membuat gambar dalam GIMP.

Sudah lama saya berhenti memprogram di Python, tetapi itu tidak menghalang saya berkongsi teknologi yang saya kenal dengan anda;). Beberapa ketika yang lalu saya masuk ke dalam mencari kerangka web "terbaik" di Python, kerana yang saya gunakan (Web2Py) agak lambat. Penyelidikan saya membawa saya ke wheezy.web; mereka yang mengenalnya pasti telah melakukannya melalui penanda aras hebat yang dibuat oleh pengarang di blognya:

rangka kerja python-terpantas-web

Saya tahu, 25.000 permintaan sesaat berbanding dengan kerangka kerja yang lain, ia adalah hantaran nyata. Saya sendiri pernah menggunakan wheezy.web untuk sementara waktu dan saya harus mengatakan ia adalah karya seni yang sebenar. Di mana sahaja anda melihatnya: kelajuan, kesederhanaan, keselamatan ... Segala-galanya. Dan di atasnya adalah karya orang bujang: Andriy Kornatskyy.

  • Bekerja dengan Python 2, Python 3 y pypy. Walaupun 3 memberikan prestasi yang lebih baik, lebih baik terus menggunakan 2 hingga 3 cukup matang.
  • Reka bentuknya adalah modular, jadi wheezy.web lebih banyak perkara: wheezy.template, wheezy.html, wheezy.keselamatan... Gunakan bahagian yang anda mahukan.
  • dokumentasi ringkas dan senang difahami.
  • Pengoptimuman HTML automatik (memampatkannya sehingga memerlukan lebih sedikit tanpa menggunakan alat luaran).
  • Bagaimana mungkin sebaliknya, memang begitu perisian percuma dan sumber terbuka ; D.
  • lain-lain ...

Di blog Andriy terdapat tutorial hebat untuk memasang wheezy.web untuk mengeringkan o dengan i18n (berbilang bahasa); juga menerangkan bagaimana nak guna wheezy.web dengan Nginx. Kelemahan dari semua tutorialnya ialah anggap anda menggunakan Debian, kerana dia belum diuji pada distro lain.

Jika anda menggunakannya Fedora dan anda berminat wheezy.web, anda bernasib baik! Berikut adalah arahan yang akan memasang pakej yang diperlukan untuk mengikuti tutorialnya:

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

Tutorial yang ditawarkan Andriy untuk dipasang wheezy.web dengan Nginx gunakan skrip yang direka khas untuk Debian, jadi anda harus melakukannya sendiri jika anda menggunakan sistem yang berbeza. Bagi saya, uWSGI cukup untuk saya, jadi saya tidak pernah mencubanya.

Yang benar adalah yang ada wheezy.web Saya menganggapnya adalah suatu kejahatan untuk menggunakan kerangka lain, jadi jika anda bekerja dengan Python, perhatikan sekurang-kurangnya! Satu-satunya kelemahan yang dapat dikaitkan ialah ia tidak termasuk lapisan abstraksi untuk memudahkan kerja dengan pangkalan data (juga tidak perlu, tetapi ada orang yang menghargainya).

Dan itu sahaja. Artikel pendek tetapi relevan. Saya berjanji akan membawa teknologi yang lebih menarik! Jumpa anda ~.

By the way, rasa ingin tahu, adakah anda tahu mengapa ia disebut "wheezy"? Andriy adalah peminat Debian. Saya tinggalkan di sana;).


Tinggalkan komen anda

Alamat email anda tidak akan disiarkan. Ruangan yang diperlukan ditanda dengan *

*

*

  1. Bertanggungjawab atas data: Miguel Ángel Gatón
  2. Tujuan data: Mengendalikan SPAM, pengurusan komen.
  3. Perundangan: Persetujuan anda
  4. Komunikasi data: Data tidak akan disampaikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Pangkalan data yang dihoskan oleh Occentus Networks (EU)
  6. Hak: Pada bila-bila masa anda boleh menghadkan, memulihkan dan menghapus maklumat anda.

  1.   Bruno cascio kata

    Prestasi bukanlah satu-satunya faktor. Berbanding dengan Django, ia sangat sukar dibaca. Sejujurnya, 25000 permintaan sesaat harus dilihat dalam tindakan, tetapi saya lebih suka tinggal bersama 15000 (django) untuk menulis dengan sihat, dan selebihnya perwakilan kerja ke infrastruktur, yang benar-benar adalah yang akan menerima atau tidak, 25000 permintaan.

    Ceria! Terima kasih atas data 🙂

    1.    Bruno cascio kata

      Tidak perlu dikatakan, untuk penanda aras saya menggunakan versi lama kerangka kerja lain ...

      1.    lajto kata

        Artikel penanda aras adalah dari tahun 2012. Dia mengubah dan memperluasnya semula pada tahun 2013 dan dia sendiri menyatakan bahawa mereka berasal dari tahun itu: «Versi terkini yang tersedia pada tulisan ini (15 Mac 2013)»

    2.    lajto kata

      Ketidakbacaan yang anda sebutkan tidak saya sangka. Saya faham bahawa kemudahan pengaturcaraan sering dicari, tetapi saya rasa tidak ada perbezaan yang sangat ketara. Saya menggunakan Web2Py selama setahun, dan saya memberi jaminan bahawa ini adalah salah satu kerangka kerja termudah yang tersedia. Sudah tentu, prestasinya mengerikan dalam banyak hal ... Dalam artikel penanda aras Massimo Di Pierro sendiri (pencipta Web2Py) telah berdebat dengan Andriy di mana dia akhirnya mengakui bahawa ada banyak yang perlu diperbaiki; Bercakap dengan Andriy di IRC, dia memberitahu saya "ada falsafah yang diterima secara meluas untuk meletakkan segala-galanya dalam kerangka kerja dan membengkaknya dengan ciri-ciri walaupun kebanyakan tidak digunakan", dan betapa tepatnya dia ...

      Mengenai apa yang anda katakan mengenai infrastruktur, saya berkongsi sebahagian daripada apa yang anda katakan; 10.000 perbezaan adalah BANYAK, terutama ketika kita membincangkan kerangka kerja yang paling popular dan matang berbanding yang paling baru dan tidak diketahui. Pendekatan saya adalah selalu menggabungkan kecekapan maksimum dengan produktiviti maksimum, dan saya rasa wheezy.web melakukan yang terbaik. Saya telah menggunakan Web2Py (paling banyak), Django, Pyramid dan wheezy.web dan saya jamin ia tidak ada tandingannya. Setelah anda menyesuaikan diri dengan cara dia melakukan sesuatu, anda tidak akan terlepas dari dia. Satu-satunya kelebihan Django adalah komuniti besar yang dimiliki dan sumber yang terdapat di seluruh Internet; iaitu: kemudahan. wheezy.web agak baru dibandingkan, dan sangat sedikit orang yang mengetahuinya; jika anda pergi dengan mudah, lebih baik Web2Py atau Django xD.

      Saya tidak mahu berkembang, tetapi apabila kita bercakap mengenai permintaan sesaat, kita bercakap mengenai persetujuan. Sekiranya persetujuan dicari, Python bukan bahasa yang sesuai. Itulah maksud bahasa lain seperti Erlang atau Haskell (dan jika anda menyusahkan saya, Rust). Tetapi dengan tepat untuk alasan ini, sangat mengagumkan bahawa wheezy.web yang menggunakan begitu sedikit kod, menjadi hasil kerja seseorang pada masa lapang dan faktor-faktor lain, berjaya mencapai prestasi sedemikian.

      Saya faham apa yang anda katakan mengenai "penulisan yang sihat", tetapi anda tidak pernah tahu berapa banyak projek dapat berkembang dalam jangka masa panjang. Menggunakan alat yang lebih cekap dan serentak, dan juga mudah (saya berpendapat bahawa wheezy.web itu sederhana untuk prestasi yang dimilikinya), menjimatkan wang dan membuat skala projek lebih lama tanpa mengubah bahasa. Pada akhirnya semuanya ada dalam wang yang harus anda bayar untuk pelayan anda. Terdapat laman web yang sangat terkenal di PHP, ketika prestasi PHP mengerikan ... Tetapi bagaimana anda menyelesaikan masalah itu? Membeli pelayan yang lebih baik. Dengan pendekatan lain, ia dapat diselesaikan dengan memprogram lebih baik dan menjimatkan sumber: P.

      Saya minta maaf kerana telah memanjangkan diri. Saya sangat berminat dengan xDDD. Ceria!

      1.    Bruno cascio kata

        Saya faham maksud anda dengan tepat, tetapi tepat kerana apa yang anda sebutkan, jika projek cenderung berkembang atau tidak, kerana kita menggunakan wheezy tidak ada lapisan pangkalan data.

        Pada pandangan saya, yang terbaik adalah tidak mengahwini bahasa apa pun. Sekiranya anda mahukan serentak, anda juga boleh menggunakan Node, enjinnya beroperasi dalam C.

        Apa yang anda sebutkan mengenai prestasi, bukan hanya penskalaan secara menegak (kes PHP), Facebook misalnya menawarkan HHVM, yang telah saya baca (tidak diuji) yang meningkatkan prestasi sebanyak 50% dan ini bukan membeli pelayan. Ringkasnya, PHP tanpa lapisan cache dan / atau cara pengoptimuman lain adalah "buruk" seperti bahasa lain tanpa yang terakhir, dan maksud saya buruk untuk memberi mereka nama, itu bukan hanya "pengaturcaraan yang lebih baik".

        Ceria! 🙂

      2.    lajto kata

        Mari kita lihat, tidak ada lapisan abstraksi. Tetapi anda menggunakan perpustakaan atau modul yang sesuai untuk bekerja dengan pangkalan data anda dan di luar, tidak ada lagi misteri. Lapisan abstraksi Web2Py sangat sederhana, misalnya, tetapi prestasi menurun secara mendadak kerana anda bahkan tidak dapat menulis SQL yang dioptimumkan. Semuanya ada di Python; mudah, tetapi sebagai balasan untuk prestasi.

        Saya tahu HHVM dan itulah sebabnya mengapa bahasa seperti PHP mengerikan untuk zaman moden; sekiranya Facebook berada di Haskell atau Erlang, tidak perlu membuat HHVM. Gunakan cache, kompres fail yang dihantar dan diterima, dll. mereka adalah aspek yang jelas dari sebarang perkembangan. Masalahnya ialah alat mesti mengukur :). Dan ada alat yang tidak memberikannya. Contoh terbaik dari ini adalah JavaScript ... Dalam kes ini sekurang-kurangnya ada keajaiban seperti CoffeeScript, Dart, dll. yang menyusun ke JS.

        ¡Saludos!

      3.    Bruno cascio kata

        Sempurna! 🙂

        Hanya satu perkara, facebook jika anda menggunakan haskell, lebih tepatnya Haxl 🙂

      4.    Terhenti kata

        Baiklah, saya banyak menggunakan web2py, saya setuju bahawa ini bukan kerangka terpantas, tetapi penanda aras itu kelihatan agak tidak sesuai, lebih-lebih lagi ketika kita berbicara tentang 3 tahun yang lalu, aplikasi web2py hello bodoh sangat dimuat berbanding dengan kerangka kerja lain, tetapi sejujurnya saya tidak pernah mengalami perbezaan prestasi yang luar biasa antara aplikasi saya yang ditulis dalam web2py dan django.

        By the way, di web2py jika anda boleh menulis SQL untuk melakukan pertanyaan secara langsung.

        Greetings.

  2.   urKh kata

    Rangka kerja web terpantas yang anda katakan, tetapi anda tidak menunjukkan contoh dan faktor utama lain, seperti pembangunan, produktiviti, dokumentasi. Dengan django yang ada, saya tidak tahu mengapa nampaknya menjadi jenayah untuk tidak menggunakan ini: h

    1.    lajto kata

      - Sudah ada contoh dalam dokumentasi. Di halaman BitBucketnya juga: https://bitbucket.org/akorn/wheezy.web/src/tip/demos/
      - Mengenai pembangunan dan produktiviti, saya secara peribadi berpendapat bahawa meringkaskannya dalam "kesederhanaan" adalah pilihan yang baik. Apakah kerangka yang lebih mudah dan senang? Jelas. Tetapi tidak dengan prestasi yang begitu banyak.
      - Saya telah meletakkan pautan ke dokumentasi dalam artikel xDDD.
      - Mengapa saya mengatakan bahawa ia adalah suatu kejahatan kerana saya percaya bahawa laman web harus seefisien mungkin, dengan segala cara. Seperti yang saya nyatakan sebelumnya, ada kerangka yang lebih mudah digunakan, tetapi menggunakan wheezy.web juga bukan pengaturcaraan C. Anda hanya perlu berusaha lebih keras :).

      Salam ^^.

  3.   lajto kata

    Ngomong-ngomong, sekiranya ada yang malas untuk mengetahui dan berpendapat bahawa Wheezy Web hanya menang dalam permintaan sesaat ... Berikut adalah beberapa tanda aras lagi:

    http://paste.desdelinux.net/5128 (penapis spam bagi DesdeLinux Ia tidak akan membenarkan saya meletakkan begitu banyak pautan)

    Saya meminta maaf kerana tidak memasukkannya sebelum ini. Saya fikir satu itu cukup untuk menarik rasa ingin tahu xD. Ceria!

  4.   fenriz kata

    Setakat ini gembira dengan Django.

    1.    oclay kata

      Ehh setiap kali saya membaca perkara-perkara ini membuatkan saya marah, saya fikir hanya dengan kerangka kerja php (Symfony, Yii, CondeIgniter, Phalcon ……… wdf !!). Sekiranya Django sudah mempunyai komuniti (cukup besar) dan kerangka kerja yang sangat baik, mengapa daripada membuang masa untuk mencipta semula roda, jangan bergabung dengan pasukan django. @ Lajto dalam perbualan anda dengan pengarang wheezy.web, mengapa tidak anda bertanya kepadanya? Sekiranya anda tidak pernah terfikir untuk menyertai pasukan django, celaka.

      1.    lajto kata

        Walaupun kedua-duanya adalah kerangka web, mereka mempunyai pendekatan yang sangat berbeza. Django berat, ia mempunyai banyak kod, sementara wheezy.web ringan, ia berkomitmen untuk kesederhanaan dan pengoptimuman. Sejauh yang saya tahu, wheezy.web adalah satu-satunya kerangka web Python yang benar-benar modular (iaitu, ia membahagikan semua kod anda ke bahagian yang berbeza yang boleh berfungsi secara bebas). Ia mempunyai banyak ciri yang membezakannya dengan yang lain.

        Mengapa tidak menyertai Django, kata anda? Kerana Django telah dirancang dengan pendekatan yang sama sekali berbeza. Bagaimana anda menerapkan reka bentuk modular pada Django? Ia mesti dibuat semula dari awal! Begitu juga dengan banyak masalah lain.

        Saya faham bahawa "lebih baik satu kerangka kerja yang berfungsi dengan baik dengan komuniti yang besar", tetapi tidak semudah itu. Agar anda faham, dengan membuat persatuan yang dangkal, Django seperti Debian dan wheezy.web seperti ... Arch? Gentoo? Ini jelas merupakan contoh yang buruk, tetapi saya rasa xDDD difahami.

        ¡Saludos!

  5.   Ulises kata

    Bagaimana dengan Lajto, hei saya membuat aplikasi dan saya membaca dokumentasi wheezy.web dan ini adalah rangka web python pertama yang saya fahami pada kali pertama 🙂 Anda lihat, saya tidak mempunyai banyak pengetahuan mengenai rangkaian dan web, tetapi saya mempunyai tarikan khas untuk pengaturcaraan.
    Bolehkah anda membantu saya bagaimana mengubah dunia hello untuk menjadikannya pelayan awam? Mungkin ini adalah soalan yang sangat konyol, maaf, tetapi saya tidak dapati dalam dokumentasi bagaimana melakukannya.
    Soalan lain, 😉 dalam kaedah mendapatkan dan mengepos, kerana saya mengembalikan maklumat yang bukan halaman html, adakah saya mengembalikan maklumat sebagaimana adanya? sebagai rentetan atau senarai atau jenis data apa pun. Pelanggan aplikasi dalam android.

    1.    lajto kata

      Helo Ulises! Saya sangat gembira kerana anda menguji wheezy.web: D.

      Mengenai apa yang anda komen, saya sangat mengesyorkan agar anda tidak memasang struktur anda sendiri. Yang ditunggang oleh Andriy cukup bagus, jadi saya cadangkan anda mengikutinya. Dalam artikel tersebut terdapat dua pautan ke blog Andriy di mana dia menerangkan langkah-langkahnya dengan i18n dan tanpa i18n. Sekiranya agak membingungkan, saya menerangkan bagaimana melakukannya tanpa i18n di bawah:

      Buka terminal dan jalankan empat perintah ini (ganti "test-web" dengan nama folder yang anda mahukan untuk projek anda):

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

      nyahzip quickstart-empty.zip

      mv quickstart-kosong ujian-web

      rm quickstart-empty.zip

      Sekiranya anda ingin menggunakan PIL, ubah fail setup.py dan lepaskan kod yang sesuai. Setelah anda siap, jalankan tiga arahan berikut:

      ujian-web-cd

      buat env

      env / bin / easy_install uwsgi

      Pelayan anda sudah terpasang. Sekiranya anda ingin membuat penanda aras cepat untuk melihat apakah ia berfungsi, berada di dalam folder, anda jalankan:

      buat penanda aras penutup hidung ujian

      Saya mengesyorkan anda pergi ke "etc / development.ini" dan menukar "limit-as = 120" menjadi "limit-as = 512". Ini adalah berapa MB RAM uWSGI yang akan "dimakan", sehingga dapat dinaikkan pada masa akan datang jika perlu.

      Akhirnya, setiap kali anda ingin membuka pelayan anda, cukup untuk meletakkan diri anda di folder projek anda dan melaksanakan:

      buat uwsgi

      Pada soalan lain ... Secara lalai, pelayan diprogramkan untuk berjalan di localhost. Sekiranya anda ingin menjadikannya umum, kerana anda sudah menyiapkannya dan ingin menggunakannya pada pelayan fizikal dalam pengeluaran, buka "src / app.py" dan cari yang berikut: make_server (", 8080, main). Parameter pertama ialah tali kosong, bukan? Nah, di sana anda meletakkan IP pelayan anda. Parameter kedua adalah port yang ingin anda gunakan, yang secara lalai adalah 8080.

      Akhirnya, apa yang anda katakan tentang mengembalikan sesuatu selain HTML, tentu anda boleh! Dalam dokumentasi mereka menjelaskan bagaimana mengembalikan semuanya: https://pythonhosted.org/wheezy.web/userguide.html#web-handlers

      Salam! Apa sahaja yang anda beritahu saya;).

      1.    Ulises kata

        Terima kasih banyak Lajto, anda benar-benar menjelaskan keraguan saya, saya telah mencuba dengan django tetapi seperti yang saya nyatakan kepada anda, saya bukan jurutera sistem dan django saya rasa ia membawa lebih banyak daripada yang saya perlukan, gunakan wheezy.web untuk menguji aplikasi di android dan berkomunikasi dengan pelayan . Sesuatu yang sangat mudah tetapi cukup pantas dan praktikal. Hai satu soalan lagi, baru-baru ini saya melihat bahawa terdapat keributan besar dengan http / 2, bagaimana saya tahu protokol wheezy.web berfungsi? Bolehkah saya membuat pelayan yang menggunakan http / 2 di wheezy.web? Atau cadangkan buku, blog, tutorial yang terdapat dalam blok yang dapat menjelaskan keseluruhan masalah rangkaian dan komunikasi. Terima kasih sekali lagi.

      2.    lajto kata

        Hello lagi Ulises ^^.

        HTTP / 2 sangat baru dan tidak akan diadopsi secara serius selama 1 tahun lagi, jadi jangan bersusah payah dengannya :). Sekiranya anda mahukan keselamatan, gunakan HTTPS dan itu sahaja.

        Saya tidak pasti apa yang Web Wheezy gunakan untuk HTTP, jadi saya menganggap ia akan menjadi WSGI.

        Salam!

  6.   lajto kata

    Ngomong-ngomong, sedikit perkara yang tidak ada. Di beberapa distro muncul mesej PERINGATAN mengenai .python-telur. Tidak ada yang berlaku jika ia muncul, tetapi jika mengganggu anda, anda boleh menghapusnya dengan:

    chmod go = ~ / .python-telur

    ¡Saludos!

  7.   Diego kata

    Saya menggunakan Django, tetapi saya akan memeriksa dokumentasinya untuk melihat cara kerjanya. Terima kasih kerana sudi berkongsi. Sorakan

  8.   JD Villegas kata

    Ia boleh digunakan dari windows !!!, adakah tutorial ??

    Terima kasih

  9.   lalita kata

    Hai kami mempunyai banyak pengalaman dengan Python. Nampaknya saya sedang melawan arus. Perkara terbaik yang pernah dicipta untuk bahasa ini ialah Django. Mereka boleh membuat statistik dan berunding dengan ratusan pengaturcara dari seluruh dunia, ini akan memberi anda lebih daripada 80%, kebanyakan mereka tidak salah. Sekiranya mereka berpusing atau berenang melawan arus, cepat atau lambat mereka akan lemas ...