Source code for ginsfsm.examples.wsgi.simple_wsgi_server

"""
Simple WSGI server
==================

It uses :class:`ginsfsm.protocols.wsgi.server.c_wsgi_server.GWsgiServer`.

You can run this file with ``gserve simple_wsgi_server.ini``

.. autofunction:: main

"""

import logging
logging.basicConfig(level=logging.DEBUG)

from ginsfsm.gaplic import GAplic
from ginsfsm.globals import (
    set_global_app,
    set_global_main_gaplic,
)
from ginsfsm.protocols.wsgi.server.c_wsgi_server import GWsgiServer


#===============================================================
#                   Wsgi app
#===============================================================
def application(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/plain')])
    yield b'Hello World\n'


def paste_app_factory(global_config, **local_conf):
    return application


#===============================================================
#                   Main
#===============================================================
[docs]def main(global_config, **local_conf): """ Entry point to run with gserve (PasteDeploy) """ if 'application' in local_conf: application = local_conf.pop('application') else: raise Exception('You must supply an wsgi application.') ga = GAplic('Wsgi-Example', **local_conf) set_global_main_gaplic(ga) ga.create_gobj( 'wsgi-server', GWsgiServer, ga, application=application, ) return ga
if __name__ == "__main__": local_conf = { 'GObj.trace_mach': True, 'GObj.logger': logging, 'GSock.trace_dump': True, 'wsgi-server.host': '0.0.0.0', 'wsgi-server.port': 8002, 'application': 'wsgi-application', } set_global_app( 'wsgi-application', paste_app_factory({}, **local_conf) ) ga = main({}, **local_conf) try: ga.start() except (KeyboardInterrupt, SystemExit): print('Program stopped')