5 Teknologi Penyokong Aplikasi Web Python yang Mesti Kamu Ketahui

Ridwan Fajar 18 November 2016

5 Teknologi Penyokong Aplikasi Web Python yang Mesti Kamu Ketahui

1. Supervisord

Bila ingin aplikasi web kamu tetap hidup, kamu dapat menggunakan Supervisord untuk menghidupkannya kembali secara otomatis. Katakanlah ketika terjadi badai request dan web server aplikasi kita mati, maka untuk menghidupkannya kembali harus masuk ke server dan menghidupkannya secara manual bukan?

Dengan supervisord, kamu dapat cukup tenang karena Supervisord akan mengambil tugas tersebut. Selain itu Supervisord juga merupakan sebuah alat untuk mengawasi dan mengendalikan sejumlah proses yang ada di bawahnya.

[program:myappdjangogunicorn]
command=/usr/local/bin/gunicorn myapp.wsgi:application -c /home/user/path-to-project/myapp/gunicorn.conf.py
directory=/home/user/path-to-project/myapp
user=www-data
autostart=true
autorestart=true
redirect_stderr=true

2. Gunicorn

Gunicorn merupakan singkatan dari "Green Unicorn". Gunicorn merupakan sebuah HTTP Server untuk Python yang berbasis web server gateway interface (WSGI) dan dikhususkan untuk lingkungan Unix-like.

Aslinya Gunicorn merupakan sebuah proyek yang diambil dari proyek Unicorn untuk Ruby. Gunicorn memiliki kompatibilitas tinggi dengan berbagai web framework berbasis WSGI seperti Django, Flask, Falcon, dan lainnya. Selain cepat dalam menangani request, Gunicorn juga cukup hemat dalam menggunakan sumber daya di mesin server.

Beberapa fitur unggul dari Gunicorn antara lain:

  • Dukungan terhadap WSGI, Django, dan Paster
  • Manajemen proses worker secara otomatis
  • Konfigurasi yang mudah
  • Konfigurasi banyak worker
  • Berbagai macam server hooks untuk ekstensibilitas
  • Kompatibel dengan Python 2.x atau 3.x
bind = "127.0.0.1:8200"
workers = 4

3. Celery

Sebagaimana dengan tagline-nya, Celery merupakan sebuah engine untuk antrian tugas terdistribusi (distributed task queue). Celery sangat sederhana, fleksibel, dan dapat diandalkan untuk proses terdistribusi dengan jumlah pesan yang sangat besar. Celery fokus pada pemrosesan real-time, dan juga mendukung penjadwalan tugas seperti yang dilakukan oleh Cron.

Sebagai contoh, mungkin Anda ingin mengkonversi sebuah gambar menjadi berbagai ukuran ketika user mengunggah fotonya ke aplikasi kita. Tentu saja untuk meningkatkan response time yang lebih baik, kita dapat memerintahkan Celery untuk memprosesnya di belakang layar dan menggunakan worker yang dimiliki oleh server kita.

Celery sangat kompatibel dengan berbagai web framework Python seperti Django dan Flask. Dokumentasinya yang sangat lengkap dan jelas dapat membuat kamu mempelajar Celery lebih cepat dan mudah.

from celery import Celery

app = Celery('tasks', broker='amqp://guest@localhost//')

@app.task
def add(x, y):
    return x + y

4. Nginx

Nginx menjadi salah satu web framework yang diminati oleh developer Python dalam membangun aplikasi web-nya. Kemudahannya dalam pengelolaan dan konfigurasinya, kian menjadi salah satu web server yang banyak dipasang di virtual private server berbasis Linux. Nginx aslinya adalah sebuah web server yang dirilis oleh sebuah perusahaan Rusia bernama Nginx Inc. yang ingin memperkenalkan sebuah web server yang cepat untuk bahasa pemrograman apapun.

Tidak hanya Python, Nginx pun biasa digunakan untuk bahasa pemrograman lain dengan mengandalkan fitur proxy-nya seperti untuk bahasa pemrograman Ruby, Perl, Go, dan lainnya. Demikian juga bila kita ingin menggunakan Nginx untuk aplikasi web Python kita. Nginx dapat membaca port mana yang menjalankan Gunicorn kemudian kita tembak port tersebut melalui proxy_pass di dalam konfigurasi server block Nginx yang akan kita buat.

  server {
    listen 80;
    server_name example.org;
    access_log  /var/log/nginx/example.log;

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
  }

5. Tornado

Tak bisa dipungkiri bahwa Node.js menjadi pion utama dalam membuat infrastruktur websocket. Socket.IO sudah sangat dikenal karena kemudahannya dalam membantu web developer untuk membangun sebuah layanan websocket secara mandiri. Namun di dunia Python sendiri, terdapat sebuah web framework yang dinamakan Tornado.

Tornado sendiri bukan hanya merupakan sebuah web framework HTTP biasa, Anda pun dapat membangun sebuah websocket service dengan menggunakan Tornado. Dengan mengandalkan modul async yang dimiliki oleh Tornado kita dapat membuat serangkaian service tersebut. Anda dapat memadukannya dengan aplikasi web Django melalui kode Javascript native di dalam file template untuk mengakses websocket yang disokong Tornado tersebut.

class EchoWebSocket(tornado.websocket.WebSocketHandler):
    def open(self):
        print("WebSocket opened")

    def on_message(self, message):
        self.write_message(u"You said: " + message)

    def on_close(self):
        print("WebSocket closed")

(rfs)