WSGI explanation with simple APP

Reading Time : ~ .

WSGI - Web Server Gateway Interface.

What is WSGI?

WSGI is specified in PEP 3333. The main goal of WSGI is to facilitate easy interconnection of servers and web frameworks/applications. WSGI defines a standerd API for web servers(ex: uWSGI, Twisted, Gunicorn) to connect and talk to web frameworks like Django, flask, pyramid. Server and framework which followed WSGI specs then it enables the use of any framework with any server for example you can use uWSGi, Gunicorn or Twisted with django with little configuraton.


Hello World! programm using WSGI interface:

helloworld_wsgi_app.py

from wsgiref.simple_server import make_server

def helloworld_app(environ, start_response):

    """Simple web application which return Hello World to browser"""

    status = '200 OK'

    response_headers = [('Content-type', 'text/plain')]

    start_response(status, response_headers)

    return [b"Hello World !"]

if __name__ == '__main__':

    # start the serveer

    server = make_server('', 5000, helloworld_app)

    server.serve_forever()
python helloworld_wsgi_app.py

Now open the http://localhost:5000 you can see "Hello World !" text in the browser.

helloworld WSGI App Explaination

The application object must accept two arguments environ and start_response.

environ: The environ parameter is a dictionary object which contains wsgi and other environment variables. some of usefull environ variables or REQUEST_METHOD(The HTTP request method, such as "GET" or "POST"), QUERY_STRING (URL after the "?") etc.

start_response: The start_response parameter is a callable accepting two required positional arguments( status , response_headers). statu is used to specify http status 200, 302, 404, 500 etc. response_headers are used to specify content-type, Cookie, Authorization.

Response: HTTP deals with bytes so we have to return list of byte strings (ex: b"Hello World !").

In above example i have used default WSGI implimentaion of server(make_server) to run helloworld_app.

 

    By Posted On
SENIOR DEVELOPER at MICROPYRAMID

Need any Help in your Project?Let's Talk

Latest Comments
Related Articles
Python Coding Techniques and Programming Practices Anjaneyulu Batta

Coding techniques and programming practices are one of the features of a professional programmer. While writing code to solve a problem programmer should make simple ...

Continue Reading...
Python to Debian package: Simple, Easy and Fast Dinesh Deshmukh

Packaging python script to debian follows strict instructions, using the following instructions, most of the steps can be skipped hence making it easy and fast.
Continue Reading...

Converting Audio and Video files using FFMPEG Tool Swetha Naretla

FFMPEG is a command-line tool that converts audio or video to required formats, which handle multimedia data. It can also capture and encode in real-time.

Continue Reading...

Subscribe To our news letter

Subscribe to our news letter to receive latest blog posts into your inbox. Please fill your email address in the below form.
*We don't provide your email contact details to any third parties