gargant.dispatch, a flexible dispatcher for WSGI

694 views

Published on

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

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

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
694
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

×