Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

gargant.dispatch, a flexible dispatcher for WSGI

Talking about gargant.dispatch, dispatcher library for WSGI applications.

https://pypi.python.org/pypi/gargant.dispatch

  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

gargant.dispatch, a flexible dispatcher for WSGI

  1. 1. gargant.dispatch a flexible dispatcher for WSGI @hirokiky
  2. 2. @hirokiky Contributing to Django, django-localflavor Admin of djangoproject.jp BePROUD Inc
  3. 3. Talk about pure WSGI library Not Django
  4. 4. Pure WSGI dispatcher urlrelay example code by WSGI.org WebDispatch
  5. 5. gargant.dispatch A dispatcher for WSGI application. now available on PyPI 2.7, 3.3 support
  6. 6. Basic usage Creating tree >>> from gargant.dispatch import Node, path_matching >>> from path.to.yours import wsgi_app >>> tree = Node((path_matching(['']),), ...             case=wsgi_app, ...             name='first')              Base setting (a.k.a Routing) path.to.yours.wsgi_app will be called when PATH_INFO='/'
  7. 7. Basic usage And creating WSGI app >>> from wsgiref.simple_server import make_server >>> from gargant.dispatch import make_wsgi_app >>> app = make_wsgi_app(tree) >>> httpd = make_server('', 8000, app) >>> httpb.serve_forever()             
  8. 8. Node gargant.dispatch.Node is not just for creating a WSGI application. >>> tree = Node((path_matching(['']),), ...             case='dolls') >>> node = tree({'PATH_INFO': '/'}) >>> node.case  # 'dolls'             
  9. 9. Hierarchy >>> tree = Node((path_matching(['']),), ...             case='dolls', ...             children=( ...                 Node((path_matching['fifth']), ...                      case='shinku'), ...             )) >>> >>> node = tree({'PATH_INFO': '/fifth'}) >>> node.case  # 'shinku' >>> node = tree({'PATH_INFO': '/'}) >>> node.case  # 'dolls'             
  10. 10. Matching matchings is not only path_matching >>> tree = Node((path_matching(['']), ...             method_matching('get'), ...             lambda environ: True), ...             case='dolls', ...             ) >>> >>> node = tree({'PATH_INFO': '/', ...              'REQUEST_METHOD': 'GET'}) >>> node.case  # 'dolls'              matchings return function handling environ All of matchings return values (as bool True), the node will be matched
  11. 11. URL args node.metched is values returned by matchings >>> tree = Node((path_matching(['']),), ...             case='doll_list', ...             children=( ...                 Node((path_matching(['{doll}']),), ...                       case='doll_detail', ...                 ), ...             )) >>> >>> node = tree({'PATH_INFO': '/first'}) >>> node.case  # 'doll_detail' >>> node.matched[0]['doll']  # 'first'             
  12. 12. and more... Adaptation of each path iteration leaf node to root node Getting URL from node.name (future)
  13. 13. Let's write dispatcher gargant.dispach is experimental/for education project please give me your feedback
  14. 14. thanks gargant.dispatch @hirokiky

×