sprockets.mixins.mediatype/examples.py

44 lines
1.4 KiB
Python
Raw Normal View History

import json
import logging
import signal
from sprockets.mixins import mediatype
from tornado import ioloop, web
import msgpack
class SimpleHandler(mediatype.ContentMixin, web.RequestHandler):
def post(self):
body = self.get_request_body()
self.set_status(200)
self.send_response(body)
self.finish()
def make_application(**settings):
application = web.Application([web.url(r'/', SimpleHandler)], **settings)
mediatype.set_default_content_type(application, 'application/json',
encoding='utf-8')
mediatype.add_binary_content_type(application, 'application/msgpack',
msgpack.packb, msgpack.unpackb)
mediatype.add_text_content_type(application, 'application/json', 'utf-8',
json.dumps, json.loads)
return application
def _signal_handler(signo, _):
logging.info('received signal %d, stopping application', signo)
iol = ioloop.IOLoop.instance()
iol.add_callback_from_signal(iol.stop)
if __name__ == '__main__':
logging.basicConfig(level=logging.DEBUG,
format='%(levelname)1.1s - %(name)s: %(message)s')
application = make_application(debug=True)
application.listen(8000)
signal.signal(signal.SIGINT, _signal_handler)
signal.signal(signal.SIGTERM, _signal_handler)
ioloop.IOLoop.instance().start()