mengenal WSGI

Tentang WSGI

Apa itu WSGI

wsgi::
Web Server Gateway Interface

untuk membuat standard interface antara web aplikasi yang dibuat
dengan python dengan web server.
WSGI mempunyai dua sisi:

  1. sisi server
  2. aplikasi / framework
  3. WSGI pada dasarnya hanya sebuah referensi interface yang harus
    diimplementasi baik oleh server maupun oleh applikasi, sehingga
    sebuah applikasi yang mengimplementasi wsgi dapat di-deploy,
    diserver mana saja asalkan server itu juga mengimplementasi WSGI
    interface.

    Ini dapat dibandingkan dengan dunia java, dimana banyak terdapat web
    framework, akan tetapi web framework itu bisa diapplikasikan di java
    web server mana saja, karena baik web framework maupun java web
    server mengimplentasi JavaEE interface yang salah satunya adalah
    servlet.

    Cara Kerja WSGI

    Server berhubungan dengan applikasi dengan memanggil sebuah callable
    (baik itu fungsi maupun object) yang disediakan oleh
    applikasi. callable itu mempunyai dua buah argumen yaitu environ dan
    start_response. Environ berupa python dictionary sedangkan
    start_response berupa fungsi.

    Sedangkan applikasi berhubungan dengan server, dengan mengirimkan
    header (dapat diartikan sebagai http header), dan memanggil
    start_response dan memberi argumen http response dan http header,
    kemudian mengembalikan list python yang berisi response. Agak
    membingunkan bila cuma membaca spesikasi, akan lebih mudah bila kita
    melihat contohnya

     def application(environ, start_response):
        "Contoh Sederhana dari WSGI Application"
        status = "200 OK"
        headers = [("Content-type","plain/text")]
        start_response(status,headers)
        return ['Hello world !\n']
      
    

    dari contoh diatas, bisa kita lihat bagaimana applikasi berhubungan
    dengan server, dimana applikasi mengirimkan status dan header dengan
    menggunakan fungsi start_response, dan mengembalikan body response
    kepada server.

    Middleware

    Yang dimaksud dengan middleware, adalah sebuah komponen python, yang
    mempunyai dua fungsi sebagai server, sekaligus sebagai
    applikasi. Pada awalnya memang membuat bingung, bagaimana bisa
    sebuah component dapat berfungsi sebagai server sekaligus sebagai
    aplikasi?.
    Jadi bila sebuah komponen berfungsi sebagai middleware, maka dia
    bertindak sebagai penengah/buffer/pembungkus dari applikasi
    lain. Jadi server tidak akan memanggil fungsi dari wsgi dari
    aplikasi,akan tetapi memanggil fungsi wsgi dari komponen middleware,
    yang nantinya akan memanggil fungsi wsgi dari applikasi.
    Middleware itu sendiri bisa merubah keluaran dari applikasi,
    melakukan routing dan berbagai macam hal lainnya.
    Contoh code dari Middleware

    class Upperware:
       def __init__(self, app):
          self.wrapped_app = app
    
       def __call__(self, environ, start_response):
          for data in self.wrapped_app(environ, start_response):
             return data.upper()
    
      
    

    contoh diatas , akan merubah keluaran dari aplikasi yang dibungkus
    middleware, menjadi huruf besar semua.

    contoh penggunaan:

      wrapped_app = Upperware(simple_app)
      serve(wrapped_app)
      
    

    Isi dari Environ

    Environ sendiri adalah sebuah dictionary yang berisi key dan value
    yang berasal dari CGI environment.

    berikut ini beberapa key yang terdapat pada environ:

    REQUEST_METHOD

    HTTP method, dapat berupa post atau get ataupun HTTP method lainya.
    SCRIPT_NAME

    PATH_INFO

    QUERY_STRING

    Query String

    CONTENT_TYPE

    CONTENT_LENGTH

    SERVER_NAME, SERVER_PORT

    SERVER_PROTOCOL

    HTTP_ Variables

    referensi
    http://python.org/dev/peps/pep-0333/
    WSGI Gateway or Glue

One Response

  1. […] Sukarno Tentang Peran CIA di Indonesia Tahun 1958 dan 1965 Saved by sango712 on Fri 17-10-2008 mengenal WSGI Saved by jasonhoyt on Fri 17-10-2008 huruf timbul harga agen (murah) Saved by millanpl on Thu […]

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: