Pulsar, Framework Konkuren untuk Python

Yana Permana 8 Agustus 2015

Pulsar, Framework Konkuren untuk Python

Pulsar merupakan framework yang dibangun dengan Python 3. Pulsar lebih fokus sebagai penyedia event driven yang konkuren. Dengan framework ini, kita bisa mengembangkan server asinkron yang dapat melakukan satu atau banyak aktivitas dalam thread maupun proses yang berbeda.

Berikut contoh webserver "Hello world!" yang dibangun dengan pulsar untuk setiap request:

from pulsar.apps import wsgi

def hello(environ, start_response):
 data = b'Hello World!\n'
 response_headers = [
 ('Content-type','text/plain'),
 ('Content-Length', str(len(data)))
 ]
 start_response('200 OK', response_headers)
 return [data]


if __name__ == '__main__':
 wsgi.WSGIServer(callable=hello).start()

Pengembang Pulsar mempunyai tujuan diantaranya menyediakan cara mudah untuk membangun program berbasis jaringan. Dalam contoh webserver Hello world! diatas, banyak klien yang bisa ditangai secara konkuren. Pulsar akan memberi tahu sistem operasi (melalui epoll atau select) untuk notifikasi ketika koneksi baru dibuat dan kemudian langsung masuk mode sleep.

Pulsar menggunakan modul asyncio dan multiprocessing dan dapat dikonfigurasi untuk menjalankan mode multi-processing, mode multi-threading atau kombinasi dari keduanya. Untuk instalasinya cukup mudah tinggal jalankan perintah berikut:

pip install pulsar

Kita juga bisa mengunduh tarballnya dari PyPi. Dan jika kita sudah menginstall Cython, ekstensi C akan ikut dikompilasi dan diinstalasi.

Secara desain, Pulsar membolehkan kita untuk memasang host yang mempunyai asynchronous yang berbeda supaya bisa diimplementasikan dalam cara yang elegan dan efisien. Berikut komponen yang bisa digunakan: Socket server, WSGI server, JSON RPC, Web socket, Test suite, Data store, dan Django integration.

Selain desain, banyak contoh aplikasi yang disediakan oleh pengembang Pulsar diantara: Contoh WSGI Hello world!, Aplikasi Httpbin WSGI, Proxy Server HTTP,  Kalkulator server JSON-RPC, Websocket random graph, Websocket chat room, website Django dengan websocket yang berbasis chat room.

Proses kerja Pulsar dijalankan melalui actors primitive. Actors adalah inti dari komputasi konkuren Pulsar. Actors tidak membagikan state didalamnya, sedangkan komunikasinya dibangun melalui pengiriman pesan asinkron yang diimplementasikan menggunakan library standar Python.

Dua class spesial dari actor adalah arbiter dan monitor. Arbiter digunakan sebagai singleton. Sedangkan monitor sebagai pengatur beberapa actor yang melakukan fungsi yang mirip. Arbiter menjalankan eventloop utama dan mengontrol semua actor. Tugas monitor mengelompokkan actor yang melakukan fungsi yang mirip. Untuk desain selengkapnya bisa kita lihat di dokumentasinya.

Pulsar juga memiliki Add-ons. Pulsar akan memeriksa jika ada tambahan library yang tersedia pada runtime dan kita bisa menggunakannya untuk menambahkan berbagai fungsionalitas untuk meningkatkan performa. Add-ons yang tersedia diantaranya:

  • Setproctitle: Jika sudah terinstall, Pulsar dapat menggunakannya untuk mengubah nama proses yang menjalankan aplikasi.
  • Psutil: Jika sudah terinstall, kunci sistem akan tersedia didalam array yang dikembalikan oleh Actor info method.
  • Ujson: Jika sudah terinstall, kita bisa menggunakan modul json native.
  • Django: dibutuhkan oleh pulsar.apps.pulse.
  • Unidecode: Digunakan untuk meningkatkan fungsi slugify.
Framework Pulsar telah memudahkan kita dalam mengembangkan berbagai aplikasi yang berhubungan dengan jaringan sehingga kita tak perlu membangun dari awal. Itulah Pulsar, Framework Konkuren untuk Python. Tertarik mencobanya? Kunjungi situs resmi Pulsar.

(yp/quantmind)