X-Git-Url: https://git.phdru.name/?a=blobdiff_plain;ds=sidebyside;f=xsetbg-wsgi.py;h=161a2b5bd5bfaf3187cbc99e3c79a3e654da8e30;hb=3c346158f50cfb7e7995cc0176af52d88308529f;hp=92d125395c58c051f6c808fc797ea637ecc41d1d;hpb=1b9123d0da1cd7fd65ce8d8f45014efea2448c99;p=xsetbg.git diff --git a/xsetbg-wsgi.py b/xsetbg-wsgi.py index 92d1253..161a2b5 100755 --- a/xsetbg-wsgi.py +++ b/xsetbg-wsgi.py @@ -6,11 +6,12 @@ from wsgiref import simple_server from wsgiref.handlers import SimpleHandler from wsgiref.simple_server import WSGIServer, make_server -simple_server.ServerHandler = SimpleHandler # Stop logging to stdout from xsetbg_conf import xsetbg_conf from xsetbg import change as _change +simple_server.ServerHandler = SimpleHandler # Stop logging to stdout + # get httpd settings from config if xsetbg_conf.has_option("httpd", "host"): host = xsetbg_conf.get("httpd", "host") @@ -25,18 +26,22 @@ else: commands = {} + def published(func): commands[func.__name__] = func return func + @published def change(force=False): _change() + @published def force(): _change(force=True) + @published def stop(): QuitWSGIServer._quit_flag = True @@ -49,6 +54,7 @@ class QuitWSGIServer(WSGIServer): while not self._quit_flag: self.handle_request() + def app(env, start_response): command = env['PATH_INFO'][1:] # Remove the leading slash if command not in commands: @@ -59,7 +65,7 @@ def app(env, start_response): try: commands[command]() - except: + except Exception: status = '500 Error' response_headers = [('Content-type', 'text/plain')] start_response(status, response_headers) @@ -70,6 +76,7 @@ def app(env, start_response): start_response(status, response_headers) return ['Ok\n'] + force() httpd = make_server(host, port, app, server_class=QuitWSGIServer) httpd.serve_forever()