PageRenderTime 64ms CodeModel.GetById 39ms RepoModel.GetById 1ms app.codeStats 0ms

/contrib/ipython-testing/web_server.py

https://github.com/kramer314/sagecell
Python | 64 lines | 45 code | 12 blank | 7 comment | 3 complexity | 2a8fc3b92baa43d063ba517251e3208b MD5 | raw file
  1. #! /usr/bin/env python
  2. # System imports
  3. import os
  4. from hashlib import sha1
  5. # Sage Cell imports
  6. import misc
  7. from trusted_kernel_manager import TrustedMultiKernelManager as TMKM
  8. from db_sqlalchemy import DB
  9. # Tornado / zmq imports
  10. import zmq
  11. from zmq.eventloop import ioloop
  12. import tornado.web
  13. ioloop.install()
  14. # Globals
  15. # This matches a kernel id (uuid4 format) from a url
  16. _kernel_id_regex = r"(?P<kernel_id>\w+-\w+-\w+-\w+-\w+)"
  17. # Tornado Web Server
  18. import handlers
  19. class SageCellServer(tornado.web.Application):
  20. def __init__(self):
  21. handlers_list = [
  22. (r"/", handlers.RootHandler),
  23. (r"/kernel", handlers.KernelHandler),
  24. (r"/embedded_sagecell.js", tornado.web.RedirectHandler, {"url":"/static/embedded_sagecell.js"}),
  25. (r"/sagecell.html", handlers.SageCellHandler),
  26. (r"/kernel/%s/iopub" % _kernel_id_regex, handlers.IOPubWebHandler),
  27. (r"/kernel/%s/shell" % _kernel_id_regex, handlers.ShellWebHandler),
  28. (r"/kernel/%s/files/(?P<file_path>.*)" % _kernel_id_regex, handlers.FileHandler, {"path": "/tmp/sagecell/"}),
  29. (r"/permalink", handlers.PermalinkHandler),
  30. (r"/service", handlers.ServiceHandler),
  31. ] + handlers.KernelRouter.urls
  32. settings = dict(
  33. template_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "templates"),
  34. static_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "static"),
  35. static_handler_class = handlers.StaticHandler
  36. )
  37. self.config = misc.Config()
  38. initial_comps = self.config.get_config("computers")
  39. default_comp = self.config.get_default_config("_default_config")
  40. kernel_timeout = self.config.get_config("max_kernel_timeout")
  41. self.km = TMKM(computers=initial_comps, default_computer_config=default_comp, kernel_timeout=kernel_timeout)
  42. self.db = DB(misc.get_db_file(self.config))
  43. self.ioloop = ioloop.IOLoop.instance()
  44. super(SageCellServer, self).__init__(handlers_list, **settings)
  45. if __name__ == "__main__":
  46. application = SageCellServer()
  47. application.listen(8888)
  48. try:
  49. application.ioloop.start()
  50. except KeyboardInterrupt:
  51. print "\nEnding processes."
  52. application.km.shutdown()