Advertisement
Guest User

server.py

a guest
Oct 28th, 2014
253
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.12 KB | None | 0 0
  1. #coding: utf-8
  2. import os
  3. import cherrypy
  4. from app import application
  5. from mako.template import Template
  6. from mako.lookup import TemplateLookup
  7.  
  8. class MakoHandler(cherrypy.dispatch.LateParamPageHandler):
  9. """Callable which sets response.body."""
  10.  
  11. def __init__(self, template, next_handler):
  12. self.template = template
  13. self.next_handler = next_handler
  14.  
  15. def __call__(self):
  16. env = globals().copy()
  17. env.update(self.next_handler())
  18. try:
  19. return self.template.render(**env)
  20. except:
  21. # something went wrong rendering the template
  22. # this will generate a pretty error page with details
  23. cherrypy.response.status = "500"
  24. return exceptions.html_error_template().render()
  25.  
  26. class MakoLoader(object):
  27.  
  28. def __init__(self):
  29. self.lookups = {}
  30.  
  31. def __call__(self, filename, directories, module_directory=None,
  32. collection_size=-1):
  33. # Find the appropriate template lookup.
  34. key = (tuple(directories), module_directory)
  35. try:
  36. lookup = self.lookups[key]
  37. except KeyError:
  38. lookup = TemplateLookup(directories=directories,
  39. module_directory=module_directory,
  40. collection_size=collection_size,
  41. output_encoding='utf-8', encoding_errors='replace')
  42. self.lookups[key] = lookup
  43. cherrypy.request.lookup = lookup
  44.  
  45. # Replace the current handler.
  46. cherrypy.request.template = t = lookup.get_template(filename)
  47. cherrypy.request.handler = MakoHandler(t, cherrypy.request.handler)
  48.  
  49. main = MakoLoader()
  50. cherrypy.tools.mako = cherrypy.Tool('on_start_resource', main)
  51. cherrypy.config.update({'tools.sessions.on':True, 'tools.mako.collection_size' :500, 'tools.mako.directories':"content",'server.socket_host': '0.0.0.0','server.socket_port': 8080,})
  52.  
  53. #--------------------------------------
  54. def main():
  55. #--------------------------------------
  56. # Get current directory
  57. try:
  58. current_dir = os.path.dirname(os.path.abspath(__file__))
  59. except:
  60. current_dir = os.path.dirname(os.path.abspath(sys.executable))
  61. # disable autoreload and timeout_monitor
  62. cherrypy.engine.autoreload.unsubscribe()
  63. cherrypy.engine.timeout_monitor.unsubscribe()
  64. # Static content config
  65. static_config = {
  66. '/': {
  67. 'tools.staticdir.root': current_dir,
  68. 'tools.staticdir.on': True,
  69. 'tools.staticdir.dir': './content',
  70. 'tools.staticdir.index': 'index.html'
  71. }
  72. }
  73. # Mount static content handler
  74. root_o = cherrypy.tree.mount(application.Root, '/', static_config)
  75. # suppress traceback-info
  76. cherrypy.config.update({'request.show_tracebacks': False})
  77. cherrypy.config.update({'server.socket_port': 8081}) # port 8080
  78. # Start server
  79. cherrypy.engine.start()
  80. cherrypy.engine.block()
  81. #--------------------------------------
  82. if __name__ == '__main__':
  83. #--------------------------------------
  84. main()
  85. # EOF
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement