[Pemrograman] Kerangka web Python tercepat: wheezy.web

wheezy_web_logo

wheezy.web tidak memiliki logo; Saya membuat gambar di GIMP.

Saya telah menghentikan pemrograman dengan Python untuk waktu yang lama, tetapi itu tidak menghentikan saya untuk membagikan teknologi yang saya ketahui dengan Anda;). Beberapa waktu yang lalu saya mencari kerangka web "terbaik" dengan Python, karena yang saya gunakan (Web2Py) sangat lambat. Penelitian saya membawa saya ke wheezy.web; mereka yang mengenalnya pasti melakukannya melalui patokan spektakuler yang dibuat oleh penulis di blognya:

python-tercepat-web-framework

Aku tahu, 25.000 permintaan per detik dibandingkan dengan kerangka kerja lainnya, ini adalah umpan nyata. Saya sendiri dulu wheezy.web untuk sementara dan saya harus mengatakan itu adalah karya seni yang nyata. Dimanapun Anda melihatnya: kecepatan, kesederhanaan, keamanan ... Semuanya. Dan di atasnya adalah karya satu orang: Andriy Kornatskyy.

  • Bekerja dengan Python 2, Python 3 y pypy. Meskipun 3 memberikan performa yang lebih baik, sebaiknya terus menggunakan 2 sampai 3 sudah cukup matang.
  • Desainnya adalah modular, jadi wheezy.web lebih banyak hal: wheezy.template, wheezy.html, wheezy.security… Gunakan bagian yang Anda inginkan.
  • dokumentasi sederhana dan mudah dimengerti.
  • Optimasi HTML otomatis (Kompres sehingga memakan lebih sedikit tanpa menggunakan alat eksternal).
  • Bagaimana bisa sebaliknya? perangkat lunak gratis dan sumber terbuka ; D.
  • dll ...

Di blog Andriy ada banyak tutorial bagus untuk memasang wheezy.web kering o dengan i18n (berbagai bahasa); juga menjelaskan Cara Penggunaan wheezy.web dengan Nginx. Kelemahan dari semua tutorialnya adalah itu asumsikan Anda menggunakan Debian, karena dia belum mengujinya di distro lain.

Jika Anda menggunakan Fedora dan Anda tertarik wheezy.web, Anda beruntung! Berikut adalah perintah yang akan menginstal paket yang diperlukan agar dapat 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 diinstal wheezy.web dengan Nginx, ia menggunakan skrip yang dirancang khusus untuk Debian, jadi Anda harus melakukannya sendiri jika menggunakan sistem yang berbeda. Dalam kasus saya, uWSGI sudah cukup bagi saya, jadi saya belum pernah mencobanya.

Yang benar adalah yang ada wheezy.web Menurut saya, menggunakan framework lain merupakan kejahatan, jadi jika Anda bekerja dengan Python, setidaknya lihatlah! Satu-satunya kelemahan yang dapat dikaitkan dengannya adalah bahwa ia tidak membawa lapisan abstraksi apa pun untuk memfasilitasi pekerjaan dengan database (juga tidak perlu, tetapi ada orang yang menghargainya).

Dan itu saja. Artikel singkat tapi relevan. Saya berjanji untuk menghadirkan lebih banyak teknologi keren! Sampai jumpa ~.

Ngomong-ngomong, penasaran, apa kamu tahu kenapa disebut "wheezy"? Andriy adalah penggemar Debian. Saya meninggalkannya di sana;).


tinggalkan Komentar Anda

Alamat email Anda tidak akan dipublikasikan. Bidang yang harus diisi ditandai dengan *

*

*

  1. Penanggung jawab data: Miguel Ángel Gatón
  2. Tujuan data: Mengontrol SPAM, manajemen komentar.
  3. Legitimasi: Persetujuan Anda
  4. Komunikasi data: Data tidak akan dikomunikasikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Basis data dihosting oleh Occentus Networks (UE)
  6. Hak: Anda dapat membatasi, memulihkan, dan menghapus informasi Anda kapan saja.

  1.   Bruno cascio dijo

    Performa bukan satu-satunya faktor. Dibandingkan dengan Django, ini sangat tidak terbaca. Dan sejujurnya, 25000 permintaan per detik harus dilihat dalam tindakan, tetapi saya lebih suka tetap menggunakan 15000 (django) untuk menulis dengan sehat, dan sisa pekerjaan mendelegasikan ke infrastruktur, yang BENAR-BENAR akan menerima atau bukan, 25000 permintaan.

    Bersulang! Terima kasih untuk datanya 🙂

    1.    Bruno cascio dijo

      Tak perlu dikatakan, untuk benchmark saya menggunakan versi lama dari framework lain ...

      1.    lajto dijo

        Artikel benchmark berasal dari tahun 2012. Dia memodifikasi dan mengembangkannya lagi pada tahun 2013 dan dia sendiri menetapkan bahwa artikel tersebut berasal dari tahun itu: «Versi terbaru yang tersedia saat penulisan ini (15 Maret 2013)»

    2.    lajto dijo

      Ketidakbacaan yang Anda sebutkan menurut saya tidak seburuk itu. Saya memahami bahwa kemudahan pemrograman sering dicari, tetapi menurut saya tidak ada perbedaan yang cukup berarti. Saya menggunakan Web2Py selama satu tahun, dan saya jamin ini adalah salah satu kerangka kerja termudah yang tersedia. Tentu saja, performanya buruk dalam banyak hal ... Dalam artikel benchmark Massimo Di Pierro sendiri (pencipta Web2Py) berdebat dengan Andriy di mana dia akhirnya mengakui bahwa masih banyak yang harus diperbaiki; berbicara dengan Andriy di IRC, dia mengatakan kepada saya "ada filosofi yang diterima secara luas untuk meletakkan segala sesuatu dalam kerangka kerja dan membengkaknya dengan fitur-fitur bahkan jika sebagian besar tidak digunakan", dan betapa benarnya dia ...

      Tentang apa yang Anda katakan tentang infrastruktur, saya membagikan sebagian apa yang Anda katakan; 10.000 perbedaan BANYAK, terutama ketika kita berbicara tentang kerangka kerja yang paling populer dan matang versus kerangka kerja yang sangat baru dan kurang dikenal. Pendekatan saya selalu menggabungkan efisiensi maksimum dengan produktivitas maksimum, dan menurut saya wheezy.web melakukan yang terbaik. Saya telah menggunakan Web2Py (paling banyak), Django, Pyramid dan wheezy.web dan saya jamin itu tidak memiliki saingan. Begitu Anda beradaptasi dengan caranya melakukan sesuatu, Anda tidak akan melepaskan diri darinya. Satu-satunya keuntungan dari Django adalah komunitas besar yang dimilikinya dan sumber daya yang ada di seluruh Internet; artinya: kemudahan. wheezy.web cukup baru dibandingkan, dan sangat sedikit orang yang mengetahuinya; jika Anda melakukannya dengan mudah, lebih baik Web2Py atau Django xD.

      Saya tidak ingin memperpanjang diri, tetapi ketika kita berbicara tentang permintaan per detik, kita berbicara tentang konkurensi. Jika konkurensi dicari, Python bukanlah bahasa yang sesuai. Untuk itu ada bahasa lain seperti Erlang atau Haskell (dan jika Anda membuat saya terburu-buru, Rust). Tetapi justru karena alasan ini sangat mengesankan bahwa wheezy.web menempati begitu sedikit kode, menjadi karya seseorang di waktu luangnya dan faktor lainnya, telah berhasil mencapai kinerja seperti itu.

      Saya mengerti apa yang Anda katakan tentang "penulisan yang sehat", tetapi Anda tidak pernah tahu seberapa besar sebuah proyek dapat tumbuh dalam jangka panjang. Menggunakan alat yang lebih efisien dan bersamaan, serta sederhana (saya berpendapat bahwa wheezy.web sederhana untuk kinerja yang dimilikinya), hemat uang dan buat skala proyek lebih lama tanpa mengubah bahasa. Pada akhirnya semuanya ada dalam uang yang harus dibayar seseorang untuk servernya. Ada situs web yang sangat terkenal di PHP, ketika PHP memiliki kinerja yang buruk ... Tapi bagaimana Anda mengatasi masalah itu? Membeli server yang lebih baik. Dengan pendekatan lain, ini diselesaikan dengan pemrograman yang lebih baik dan menghemat sumber daya: Hal.

      Saya minta maaf telah memperpanjang diri saya begitu banyak. Saya sangat mudah bergairah tentang xDDD. Bersulang!

      1.    Bruno cascio dijo

        Saya sangat mengerti apa yang Anda maksud, tetapi justru karena apa yang Anda sebutkan, apakah sebuah proyek cenderung tumbuh atau tidak, karena kami menggunakan wheezy tidak ada lapisan database.

        Menurut saya, yang terbaik adalah tidak menikah dengan bahasa apa pun. Jika Anda menginginkan konkurensi, Anda dapat menggunakan Node juga, mesinnya berjalan di C.

        Apa yang Anda sebutkan tentang kinerja tidak hanya menskalakan secara vertikal (kasus PHP), Facebook misalnya menawarkan HHVM, yang telah saya baca (belum diuji) yang meningkatkan kinerja hingga 50% dan ini tidak membeli server. PHP biasa tanpa lapisan cache dan / atau cara lain untuk mengoptimalkan sama "buruknya" seperti bahasa lain tanpa yang terakhir, dan maksud saya buruk untuk memberi mereka nama, itu bukan hanya "kode yang lebih baik".

        Bersulang! 🙂

      2.    lajto dijo

        Mari kita lihat, yang tidak ada adalah lapisan abstraksi. Tapi Anda menggunakan perpustakaan atau modul yang sesuai untuk bekerja dengan database Anda dan di luar, tidak ada lagi misteri. Lapisan abstraksi Web2Py sangat sederhana, misalnya, tetapi kinerja turun drastis karena Anda bahkan tidak dapat menulis SQL yang dioptimalkan. Semuanya dengan Python; mudah, tetapi sebagai imbalan atas kinerja.

        Saya tahu HHVM dan itulah mengapa bahasa seperti PHP sangat buruk di zaman modern; jika Facebook ada di Haskell atau Erlang, tidak perlu membuat HHVM. Gunakan cache, kompres file yang dikirim dan diterima, dll. mereka adalah aspek yang jelas dari setiap perkembangan. Masalahnya adalah bahwa alat tersebut harus memenuhi :). Dan ada alat yang tidak memberikannya. Contoh terbaik dari ini adalah JavaScript ... Dalam hal ini setidaknya ada keajaiban seperti CoffeeScript, Dart, dll. yang dikompilasi ke JS.

        Salam!

      3.    Bruno cascio dijo

        Sempurna! 🙂

        Cuma satu hal, facebook kalau pakai haskell, lebih tepatnya Haxl 🙂

      4.    Berhenti dijo

        Yah, saya banyak menggunakan web2py, saya setuju bahwa ini bukan framework tercepat, tetapi benchmark itu sepertinya agak keluar dari tempatnya, terlebih lagi ketika kita berbicara tentang 3 tahun yang lalu, aplikasi hello dumb dari web2py sangat dimuat dibandingkan dengan kerangka kerja lain, tetapi sejujurnya saya belum mengalami perbedaan kinerja yang luar biasa antara aplikasi saya yang ditulis dalam web2py dan django.

        Omong-omong, di web2py jika Anda dapat menulis SQL untuk melakukan kueri secara langsung.

        Salam.

  2.   urKh dijo

    Kerangka web tercepat yang Anda katakan, tetapi Anda tidak menampilkan contoh dan faktor kunci lainnya, seperti pengembangan, produktivitas, dokumentasi. Django yang sudah ada, saya tidak tahu mengapa tampaknya merupakan kejahatan jika tidak menggunakan ini: p

    1.    lajto dijo

      - Sudah ada contoh di dokumentasi. Di halaman BitBucket-nya juga: https://bitbucket.org/akorn/wheezy.web/src/tip/demos/
      - Mengenai pengembangan dan produktivitas, saya pribadi berpikir bahwa meringkasnya dalam "kesederhanaan" adalah pilihan yang baik. Apa kerangka kerja yang lebih sederhana dan lebih mudah? Bersih. Tapi tidak dengan performa sebanyak itu.
      - Saya telah meletakkan tautan ke dokumentasi di artikel xDDD.
      - Mengapa saya mengatakan bahwa itu adalah kejahatan adalah karena saya percaya bahwa halaman web harus seefisien mungkin, dalam segala hal. Seperti yang saya sebutkan sebelumnya, ada framework yang lebih mudah digunakan, tetapi menggunakan wheezy.web juga bukan pemrograman C. Anda hanya perlu berusaha lebih keras :).

      Salam ^^.

  3.   lajto dijo

    Ngomong-ngomong, jika ada yang malas untuk mencari tahu dan berpikir bahwa Wheezy Web hanya menang dalam permintaan per detik ... Berikut beberapa tolok ukur lainnya:

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

    Saya minta maaf karena tidak memasukkan mereka sebelumnya. Saya pikir itu sudah cukup untuk menarik rasa ingin tahu xD. Bersulang!

  4.   Fenriz dijo

    Sejauh ini senang dengan Django.

    1.    oclay dijo

      Ehh setiap saya membaca hal-hal ini membuat saya marah, saya pikir itu hanya dengan framework php (Symfony, Yii, CondeIgniter, Phalcon ……… wdf !!). Jika Django sudah memiliki komunitas (cukup besar) dan merupakan kerangka kerja yang sangat baik mengapa daripada membuang-buang waktu untuk menemukan kembali roda jangan bergabung dengan tim django. @ Lajto dalam percakapan Anda dengan penulis wheezy.web mengapa Anda tidak bertanya padanya Jika Anda tidak pernah berpikir untuk bergabung dengan tim Django, sialan. Cheers ..

      1.    lajto dijo

        Meskipun keduanya merupakan kerangka kerja web, keduanya memiliki pendekatan yang sangat berbeda. Django berat, memiliki banyak kode, sementara wheezy.Web ringan, berkomitmen pada kesederhanaan dan pengoptimalan. Sepengetahuan saya, wheezy.web adalah satu-satunya framework web Python yang benar-benar modular (yaitu, ia membagi semua kodenya menjadi bagian berbeda yang dapat bekerja secara independen). Ini memiliki banyak karakteristik yang membedakannya dari yang lain.

        Mengapa tidak bergabung dengan Django, katamu? Karena Django telah dirancang dengan pendekatan yang sepenuhnya berbeda. Bagaimana Anda menerapkan desain modular ke Django? Itu harus dibuat ulang secara praktis dari awal! Sama dengan banyak masalah lainnya.

        Saya mendapatkan perasaan "lebih baik, satu kerangka kerja yang bekerja dengan baik dengan komunitas besar", tetapi itu tidak semudah itu. Jadi Anda mengerti, dengan membuat asosiasi yang dangkal, Django seperti Debian dan wheezy ..Web seperti… Arch? Gentoo? Ini jelas merupakan contoh yang buruk, tetapi saya pikir xDDD dipahami.

        Salam!

  5.   Ulises dijo

    Bagaimana dengan Lajto, hei saya sedang membuat aplikasi dan saya membaca dokumentasi wheezy.web dan ini adalah kerangka kerja web python pertama yang saya pahami pertama kali 🙂 Anda lihat, saya tidak memiliki banyak pengetahuan tentang jaringan dan web, tetapi saya memiliki daya tarik khusus untuk pemrograman .
    Bisakah Anda membantu saya mengubah hello world menjadi server publik? Mungkin ini pertanyaan yang sangat konyol, maaf, tapi saya tidak dapat menemukan di dokumentasi bagaimana melakukannya.
    Pertanyaan lain, 😉 dalam metode get dan posting, karena saya mengembalikan informasi yang bukan halaman html, apakah saya mengembalikan informasi sebagaimana adanya? sebagai string atau daftar atau jenis data apa pun. Klien sebuah aplikasi di android.

    1.    lajto dijo

      Halo Ulises! Saya sangat senang Anda menguji wheezy..: D.

      Tentang apa yang Anda komentari, saya sangat menyarankan agar Anda tidak memasang struktur Anda sendiri. Wahana andriy yang satu ini lumayan bagus, jadi saya sarankan anda mengikutinya. Di artikel tersebut terdapat dua link ke blog Andriy dimana dia menjelaskan langkah-langkahnya dengan i18n dan tanpa i18n. Jika agak membingungkan, saya akan menjelaskan cara melakukannya tanpa i18n di bawah ini:

      Buka terminal dan jalankan empat perintah berikut (ganti "test-web" dengan nama folder yang Anda inginkan untuk proyek Anda):

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

      buka zip quickstart-empty.zip

      mv quickstart-kosong uji-web

      rm quickstart-kosong.zip

      Jika Anda ingin menggunakan PIL, ubah file setup.py dan hapus komentar pada kode yang sesuai. Setelah Anda siap, jalankan tiga perintah berikut:

      web-test-cd

      membuat iri

      env / bin / easy_install uwsgi

      Server Anda sudah terpasang. Jika Anda ingin melakukan benchmark cepat untuk melihat apakah berhasil, berada di dalam folder, Anda menjalankan:

      buat uji patokan penutup hidung

      Saya sarankan Anda pergi ke "etc / development.ini" dan ubah "limit-as = 120" menjadi "limit-as = 512". Ini adalah berapa banyak MB RAM yang akan "memakan" uWSGI, sehingga dapat ditingkatkan di masa mendatang jika perlu.

      Akhirnya, setiap kali Anda ingin membuka server Anda, itu akan cukup untuk menempatkan diri Anda di folder proyek Anda dan mengeksekusi:

      buat uwsgi

      Di pertanyaan lain… Secara default, server diprogram untuk berjalan di localhost. Jika Anda ingin membuatnya menjadi publik, karena Anda sudah menyiapkannya dan ingin menggunakannya di server fisik dalam produksi, cukup buka "src / app.py" dan cari yang berikut ini: make_server (", 8080, main). Parameter pertama adalah string kosong, bukan? Nah, di sana Anda meletakkan IP server Anda. Parameter kedua adalah port yang ingin Anda gunakan, yang secara default adalah 8080.

      Terakhir, apa yang Anda katakan tentang mengembalikan sesuatu yang bukan HTML, tentu saja bisa! Dalam dokumentasi mereka menjelaskan cara mengembalikan semuanya: https://pythonhosted.org/wheezy.web/userguide.html#web-handlers

      Salam! Apa pun yang Anda ceritakan;).

      1.    Ulises dijo

        Terima kasih banyak Lajto, Anda benar-benar mengklarifikasi keraguan saya, saya telah mencoba dengan django tetapi seperti yang saya sebutkan kepada Anda, saya bukan seorang insinyur sistem dan django saya pikir itu membawa lebih dari yang saya butuhkan, gunakan wheezy.web untuk menguji aplikasi di android dan mengkomunikasikannya dengan server . Sesuatu yang sangat sederhana tetapi cukup cepat dan praktis. Hei satu pertanyaan lagi, baru-baru ini saya melihat ada keributan besar dengan http / 2, bagaimana saya tahu apa protokol wheezy.web bekerja? Bisakah saya membuat server yang menggunakan http / 2 di wheezy.web? Atau rekomendasikan saya buku, blog, tutorial yang ada di blok-blok yang bisa menjelaskan keseluruhan soal jaringan dan komunikasi. Terima kasih lagi.

      2.    lajto dijo

        Halo lagi Ulises ^^.

        HTTP / 2 sangat baru dan tidak akan diadopsi secara serius selama 1 tahun ke depan, jadi jangan repot-repot :). Jika Anda menginginkan keamanan, gunakan HTTPS dan hanya itu.

        Saya tidak yakin apa yang digunakan Wheezy Web untuk HTTP, jadi saya berasumsi bahwa itu adalah WSGI.

        Salam!

  6.   lajto dijo

    Ngomong-ngomong, sesuatu yang tidak berarti. Pada beberapa distro muncul pesan PERINGATAN tentang .python-eggs. Tidak ada yang terjadi jika muncul, tetapi jika itu mengganggu Anda, Anda dapat menghapusnya dengan:

    chmod go = ~ / .python-eggs

    Salam!

  7.   Diego dijo

    Saya menggunakan Django, tetapi saya akan memeriksa dokumentasinya untuk melihat cara kerjanya. Terima kasih telah berbagi. Bersulang

  8.   JD Villegas dijo

    Dapat digunakan dari windows !!!, apakah ada tutorialnya ??

    terima kasih

  9.   lalita dijo

    Hai, kami memiliki banyak pengalaman dengan Python. Tampak bagi saya bahwa mereka mendayung melawan arus. Hal terbaik yang pernah ditemukan untuk bahasa ini adalah Django. Mereka dapat membuat statistik dan berkonsultasi dengan ratusan programmer dari seluruh dunia, itu akan memberi Anda lebih dari 80%, kebanyakan tidak salah. Jika mereka mendayung atau berenang melawan arus, cepat atau lambat mereka akan tenggelam ...