Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Web Frameworks 比較 2019

Web Frameworks 比較 2019

at PyCon Kyushu 2019 in Okinawa

Manabu TERADA

May 18, 2019
Tweet

More Decks by Manabu TERADA

Other Decks in Technology

Transcript

  1. Comparing Python Web Framework Python Web Manabu TERADA (@terapyon) CMScom

    / Python ED 2019-05-18 PyCon Kyushu in Okinawa 2019
  2. About me ✦ Owner and CEO of CMS communications Inc.

    (CMS ) ✦ Board Chair of PyCon JP (Japan) ✦ Board of Python ED (Japan) ✦ Plone Foundation Ambassador ✦ PSF Contributing member ✦ Member of NVDA Japanese Team !2 Manabu TERADA (@terapyon)
  3. About our company ✦ Our company is CMScom based in

    Tokyo, Japan ✦ We use Plone for building web sites ✦ Universities, Public institutions ✦ Engineering companies ✦ Supporting education tools !3 CMScom (CMS )
  4. Contents of this session What is a Web Framework and

    how do we design the framework (Web ) List of functions for a Web Framework (Web ) List of Web Frameworks and introduction of features for each framework (Web ) How to choose a Web Framework for your project ( ?) !5
  5. History of Web Frameworks ✦ Django ✦ Flask ✦ Pyramid

    ✦ Zope ✦ Tornado ✦ aiohttp ✦ Guillotina ✦ Bottle ✦ responder !7 List of typical frameworks in this talk
  6. What is a Web Framework and how can we design

    a framework 8FCϑϨʔϜϫʔΫͱ͸ʁ ϑϨʔϜϫʔΫΛͲ͏ఆٛ͢Δʁ
  7. What is a Web Framework ✦ Web Application Framework (Web

    ) ✦ Sending HTML/JSON to browsers ( HTML/JSON ) ✦ Support HTTP protocol (HTTP ) ✦ GET / POST method ✦ Status code !10 What? ( )
  8. What is a Web Framework ✦ Inspecting URL and nding

    form URL to the content ✦ (URL URL ) ✦ Routing ( ) ✦ traversal ( ) ✦ Handling POST or GET (POST GET ) ✦ HTML Templates (HTML ) ✦ Database connection ( ) ✦ sessions and cookies ( ) !11 to design the framework in this talk
  9. List of functions for a Web Framework important functions (

    ) ✦ HTML Template ✦ URL dispatcher ✦ Managing Requests ✦ Managing cookies ✦ Login function ✦ Managing users ✦ Persistent layer ✦ Type of Databases ✦ Manage data in a Database ✦ Web server ✦ Run command or manage daemon ✦ REST API ✦ Handling local data ✦ Async server ✦ Setting up and managing environment data !13
  10. List of functions for a Web Framework HTML Template (

    ) ✦ Building a HTML in dynamic ✦ ( HTML ) ✦ Set to parts of some templates ✦ ( ) ✦ Template inheritance ✦ ( ) ✦ ltering or running tiny functions ✦ ( ) ✦ control of loop and condition ✦ ( ) ✦ List of Template engine ✦ DTE(Django Template Engine) ✦ jinja2 ✦ mako ✦ Chameleon / ZPT !14
  11. List of functions for a Web Framework URL dispatcher ✦

    Inspecting URL ✦ (URL ) ✦ Routing ✦ ( ) ✦ Finding the function or the content ✦ ( ) ✦ Type of URL dispatcher ✦ Routing ✦ like url.py as Django ✦ decorator ✦ Object Traversal !15
  12. List of functions for a Web Framework ✦ Almost frameworks

    supported ✦ ( ) ✦ but each frameworks are di erent approach ✦ ( ) ✦ argument ( ) ✦ global variable of local thread ( ) !16 Managing Requested Objects (Request )
  13. List of functions for a Web Framework ✦ Almost frameworks

    supported ✦ ( ) ✦ Getting cookie from request object ✦ ( ) ✦ Handling cookie to response object ✦ ( ) !17 Managing cookies (cookie )
  14. List of functions for a Web Framework ✦ some frameworks

    supported ✦ ( ) ✦ some frameworks supported by ad-don ✦ ( ) !18 Login function ( )
  15. List of functions for a Web Framework ✦ some frameworks

    supported ✦ ( ) ✦ some frameworks supported by ad-don ✦ ( ) ✦ some frameworks does NOT support, Needing to make if you want ✦ ( ) !19 Managing users ( )
  16. List of functions for a Web Framework ✦ Type of

    Databases ( ) ✦ Django ORM for RDBMS ✦ SQLAlchemy for RDBMS ✦ KVS ✦ Object DB ✦ Managing data in Database ( ) ✦ Data management for record or content !20 Persistent layer ( )
  17. List of functions for a Web Framework Web server ✦

    Support WSGI ✦ Support ASGI ✦ Original ✦ WSGI Server ✦ gunicorn ✦ uWSGI ✦ Waitress ✦ ASGI Server ✦ Uvicorn !21
  18. List of functions for a Web Framework ✦ like run

    server (run ) ✦ Manage demon prosess ( ) !22 Run command or manage daemon
  19. List of functions for a Web Framework ✦ for frontend

    and more ✦ RESTfull API ✦ some frameworks supported ✦ ( ) ✦ some frameworks supported by ad-don ✦ ( ) ✦ some frameworks does NOT support, Needing to make if you want ✦ ( ) !23 REST API
  20. List of functions for a Web Framework ✦ Support Async

    function ✦ (Async ) ✦ some frameworks supported ✦ ( Async ) !24 Async server ( )
  21. List of functions for a Web Framework ✦ Install (

    ) ✦ pip ✦ buildout ✦ other ✦ environ setting ( ) ✦ ini le ✦ python code ✦ yml !25 Setting up and managing environment data ( )
  22. Web Frameworks ✦ Django ✦ Flask ✦ Pyramid ✦ Zope

    ✦ Tornado ✦ aiohttp ✦ Guillotina ✦ Bottle ✦ responder !27 List of typical frameworks in this talk
  23. Web Frameworks ✦ Django https://www.djangoproject.com/ ✦ Django Software Foundation ✦

    BSD license ✦ First release on PyPi 1.0.1 / May 18, 2010 ✦ Lasted release 2.1.4 in Jan 1, 2019 ✦ Full stack all in one Web Framework ✦ ( Web ) !28 Django
  24. Web Frameworks Django for me ✦ Good point for me

    ✦ ✦ (Django admin) ✦ Bad point for me ✦ !29
  25. List of functions for a Web Framework Django has functions

    ✦ HTML Template ✦ URL dispatcher ✦ url.py ✦ Managing Requests ✦ Managing cookies ✦ Login function ✦ Managing users ✦ Persistent layer ✦ only ORM (Need a SQL server) ✦ Manage data in a Database ✦ Web server ✦ Test server ✦ Support WSGI ✦ Run command or manage daemon ✦ REST API (Add-on DRF) ✦ Handling local data ✦ Using request object ✦ Async server ✦ Setting up and managing environment data ✦ Python code !30
  26. Web Frameworks ✦ Flask http:// ask.pocoo.org/ ✦ Pallets team (Armin

    Ronacher) ✦ BSD licensed ✦ First release on PyPi 0.1 / Apr 16, 2010 ✦ Lasted release 1.0.2 in Jan 1, 2019 ✦ Simple and useful Web Framework ✦ ( Web ) !31 Flask
  27. Web Frameworks Flask for me ✦ Good point for me

    ✦ ✦ ✦ Bad point for me ✦ ✦ !32
  28. List of functions for a Web Framework important functions ✦

    HTML Template ✦ URL dispatcher ✦ decorator ✦ Managing Requests ✦ Managing cookies ✦ Login function ✦ Managing users ✦ Persistent layer ✦ ORM (Add-on) ✦ Manage data in a Database ✦ Web server ✦ Test server ✦ Support WSGI ✦ Run command or manage daemon ✦ REST API (Add-on ask-restplus) ✦ Handling local data ✦ global variable ✦ Async server ✦ Setting up and managing environment data ✦ Python code or ini le !33
  29. Web Frameworks ✦ Pyramid https://trypyramid.com/ ✦ Pylons Project ✦ Repoze

    Public License (BSD-like) ✦ First release on PyPi 1.0 / Jan 31, 2011 ✦ Lasted release 1.10.1 in Jan 1, 2019 ✦ Full support Web Framework ✦ Web !34 Pyramid
  30. Web Frameworks Pyramid for me ✦ Good point for me

    ✦ ✦ ✦ Bad point for me ✦ !35
  31. List of functions for a Web Framework important functions ✦

    HTML Template ✦ Add-on (choosing any template) ✦ URL dispatcher ✦ decorator ✦ traversal ✦ Managing Requests ✦ Managing cookies ✦ Login function ✦ Managing users ✦ Persistent layer ✦ ORM or ZODB ✦ Manage data in a Database ✦ Web server ✦ Test server ✦ Support WSGI ✦ Run command or manage daemon ✦ REST API ✦ Need to make a code ✦ Handling local data ✦ context object ✦ Async server ✦ a part of support ✦ Setting up and managing environment data ✦ ini le !36
  32. Web Frameworks ✦ Zope2 / Zope http://www.zope.org/ ✦ Zope Foundation

    (Plone Foundation) ✦ Zope Public License ✦ First release before 2000 ✦ Lasted release 2.13.28 / 4.0a in Jan 1, 2019 ✦ Full stack biggest Web Framework ✦ Web !37 Zope
  33. Web Frameworks Zope for me ✦ Good point for me

    ✦ ✦ ✦ Bad point for me ✦ !38
  34. List of functions for a Web Framework important functions ✦

    HTML Template ✦ URL dispatcher ✦ object traversal ✦ Managing Requests ✦ Managing cookies ✦ Login function ✦ Managing users ✦ Persistent layer ✦ Include a Object DB (ZODB) ✦ Manage data in a Database ✦ Web server ✦ Original or WSGI ✦ Run command or manage daemon ✦ REST API ✦ Add-on ✦ Handling local data ✦ context object ✦ Async server ✦ Setting up and managing environment data ✦ Conf le by buildout !39
  35. Web Frameworks ✦ Tornado https://www.tornadoweb.org ✦ Facebook (originally developed at

    FriendFeed) ✦ Apache License, Version 2.0 ✦ First release on PyPi 0.2 / May 18, 2010 ✦ Lasted release 5.1.1 in Jan 1, 2019 (now 6.0 already released) ✦ Asynchronous Web Framework ✦ ( Web ) !40 Tornado
  36. Web Frameworks Tornado for me ✦ Good point for me

    ✦ ✦ Bad point for me ✦ !41
  37. List of functions for a Web Framework important functions ✦

    HTML Template ✦ Original ✦ URL dispatcher ✦ Register ✦ Managing Requests ✦ Managing cookies ✦ Login function ✦ Managing users ✦ Persistent layer ✦ Type of Databases ✦ Manage data in a Database ✦ Web server ✦ Original ✦ Run command or manage daemon ✦ REST API ✦ Need to make a code ✦ Handling local data ✦ ?? ✦ Async server ✦ Setting up and managing environment data ✦ ?? !42
  38. Web Frameworks ✦ aiohttp https://aiohttp.readthedocs.io/ ✦ Nikolay Kim and Andrew

    Svetlov ✦ Apache 2 licensed ✦ First release on PyPi 0.1 / Oct 26, 2013 ✦ Lasted release 3.5.1 in Jan 1, 2019 ✦ Async HTTP client/server for asyncio ✦ ( HTTP ) !43 aiohttp
  39. Web Frameworks aiohttp for me ✦ Good point for me

    ✦ ✦ Bad point for me ✦ !44
  40. List of functions for a Web Framework important functions ✦

    HTML Template ✦ URL dispatcher ✦ Register ✦ decorator ✦ Managing Requests ✦ Managing cookies ✦ Login function ✦ Managing users ✦ Persistent layer ✦ Type of Databases ✦ Manage data in a Database ✦ Web server ✦ Original ✦ Run command or manage daemon ✦ REST API ✦ Need to make a code ✦ Handling local data ✦ Async server ✦ Setting up and managing environment data !45
  41. Web Frameworks ✦ Guillotina https://guillotina.readthedocs.io ✦ Ramon Navarro Bosch &

    Nathan Van Gheem (Plone Foundation) ✦ BSD license ✦ First release on PyPi 1.3.0 / Aug 1, 2017 ✦ Lasted release 4.4.0 in Jan 1, 2019 ✦ AsyncIO REST API Framework for Object model ✦ ( REST API ) !46 Guillotina
  42. Web Frameworks Guillotina for me ✦ Good point for me

    ✦ ✦ ✦ Bad point for me ✦ ✦ !47
  43. List of functions for a Web Framework important functions ✦

    HTML Template ✦ URL dispatcher ✦ object traversal ✦ Managing Requests ✦ Managing cookies ✦ Login function ✦ Managing users ✦ Persistent layer ✦ Special connector to PostgreSQL ✦ Manage data in a Database ✦ Web server ✦ Run command or manage daemon ✦ REST API ✦ Handling local data ✦ context ✦ Async server ✦ Setting up and managing environment data ✦ yaml !48
  44. Web Frameworks ✦ Bottle https://bottlepy.org/ ✦ Marcel Hellkamp ✦ MIT

    License ✦ First release on PyPi 0.4.3 / Jul 7, 2009 ✦ Lasted release 0.12.16 in Jan 1, 2019 ✦ Simple and lightweight WSGI micro web-framework ✦ ( ) !49 Bottle
  45. Web Frameworks Bottle for me ✦ Good point for me

    ✦ ✦ Bad point for me ✦ !50
  46. List of functions for a Web Framework important functions ✦

    HTML Template ✦ Add-on (choosing any template) ✦ URL dispatcher ✦ decorator ✦ Managing Requests ✦ Managing cookies ✦ Login function ✦ Managing users ✦ Persistent layer ✦ ORM (add-on) ✦ Manage data in a Database ✦ Web server ✦ Test server ✦ Support WSGI ✦ Run command or manage daemon ✦ REST API ✦ Need to make a code ✦ Handling local data ✦ Async server ✦ Setting up and managing environment data !51
  47. Web Frameworks ✦ responder https://python-responder.org/ ✦ Kenneth Reitz ✦ Apache

    License, Version 2.0 ✦ First release on PyPi 0.0.0 / Oct 9, 2018 ✦ Lasted release 1.1.2 in Jan 1, 2019 (now 1.3 already released) ✦ ASGI app for API server ✦ (ASGI API ) !52 responder
  48. Web Frameworks responder for me ✦ Good point for me

    ✦ ✦ Bad point for me ✦ ( ??) !53
  49. List of functions for a Web Framework important functions ✦

    HTML Template ✦ jinja2 ✦ URL dispatcher ✦ decorator ✦ Managing Requests ✦ Managing cookies ✦ Login function ✦ Managing users ✦ Persistent layer ✦ Type of Databases ✦ Manage data in a Database ✦ Web server ✦ ASGI?? ✦ Run command or manage daemon ✦ REST API ✦ Handling local data ✦ ?? ✦ Async server ✦ Setting up and managing environment data ✦ ?? !54
  50. How to choose a Web Framework for your project News

    site ( ) ✦ ✦ ✦ ✦ ✦ ✦ !56 ✦ Django ✦ Flask ✦ Pyramid ✦ Zope ✦ Tornado ✦ aiohttp ✦ Guillotina ✦ Bottle ✦ responder
  51. How to choose a Web Framework for your project API

    backend server (API ) ✦ JSON ✦ ✦ ✦ ? ✦ !57 ✦ Django ✦ Flask ✦ Pyramid ✦ Zope ✦ Tornado ✦ aiohttp ✦ Guillotina ✦ Bottle ✦ responder
  52. How to choose a Web Framework for your project Single

    endpoint API server (1 API) ✦ JSON ✦ ✦ ✦ ? ✦ AWS Lambda ? !58 ✦ Django ✦ Flask ✦ Pyramid ✦ Zope ✦ Tornado ✦ aiohttp ✦ Guillotina ✦ Bottle ✦ responder
  53. How to choose a Web Framework for your project Portal

    site ( ) ✦ ✦ ✦ ✦ ✦ !59 ✦ Django ✦ Flask ✦ Pyramid ✦ Zope ✦ Tornado ✦ aiohttp ✦ Guillotina ✦ Bottle ✦ responder
  54. How to choose a Web Framework for your project CMS

    ( ) ✦ ✦ ✦ ✦ ✦ ✦ ✦ !60 ✦ Django ✦ Flask ✦ Pyramid ✦ Zope ✦ Tornado ✦ aiohttp ✦ Guillotina ✦ Bottle ✦ responder
  55. How to choose a Web Framework for your project API

    Server for CMS ✦ JSON ✦ ✦ ✦ ✦ ✦ ✦ ✦ !61 ✦ Django ✦ Flask ✦ Pyramid ✦ Zope ✦ Tornado ✦ aiohttp ✦ Guillotina ✦ Bottle ✦ responder