Suche senden
Hochladen
How To Drink Wsgi
•
0 gefällt mir
•
1,548 views
Atsushi Odagiri
Folgen
Melden
Teilen
Melden
Teilen
1 von 21
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
Clack meetup #1 lt
Clack meetup #1 lt
Atsushi Odagiri
Groovyでjson
Groovyでjson
Yasuharu Hayami
Gruntを導入しよう!の話
Gruntを導入しよう!の話
Koji Nakamura
第1回鹿児島node.jsの会資料_内村
第1回鹿児島node.jsの会資料_内村
Koichi Uchimura
Ruby on Windows
Ruby on Windows
Tomoya Kawanishi
JS開発におけるTDDと自動テストツール利用の勘所
JS開発におけるTDDと自動テストツール利用の勘所
Koji Nakamura
VBScriptのダメなところ~その1~
VBScriptのダメなところ~その1~
bouzuya
Nodejs
Nodejs
和樹 川端
Empfohlen
Clack meetup #1 lt
Clack meetup #1 lt
Atsushi Odagiri
Groovyでjson
Groovyでjson
Yasuharu Hayami
Gruntを導入しよう!の話
Gruntを導入しよう!の話
Koji Nakamura
第1回鹿児島node.jsの会資料_内村
第1回鹿児島node.jsの会資料_内村
Koichi Uchimura
Ruby on Windows
Ruby on Windows
Tomoya Kawanishi
JS開発におけるTDDと自動テストツール利用の勘所
JS開発におけるTDDと自動テストツール利用の勘所
Koji Nakamura
VBScriptのダメなところ~その1~
VBScriptのダメなところ~その1~
bouzuya
Nodejs
Nodejs
和樹 川端
WSHで遊ぼう!
WSHで遊ぼう!
bouzuya
Grunt.jsを使った Expressの開発環境構築
Grunt.jsを使った Expressの開発環境構築
kamiyam .
JS開発環境を晒す。
JS開発環境を晒す。
Eiji Kuroda
はてなのNagios - モニカジ#3
はてなのNagios - モニカジ#3
Shoichi Masuhara
[大図解]ピグライフはこう動いている
[大図解]ピグライフはこう動いている
Akihiro Kuwano
Node.jsでブラウザメッセンジャー
Node.jsでブラウザメッセンジャー
Yahoo!デベロッパーネットワーク
Node.js入門
Node.js入門
俊夫 森
Bossan dentoo
Bossan dentoo
kubo39
Djangoフレームワークの紹介
Djangoフレームワークの紹介
Shinya Okano
EWD 3トレーニング・コース #1 Node.jsとGT.Mの統合方法
EWD 3トレーニング・コース #1 Node.jsとGT.Mの統合方法
Kiyoshi Sawada
Ruby way-openstack.keynote
Ruby way-openstack.keynote
Uchio Kondo
NanoStrand
NanoStrand
Masashi Umezawa
100615分散nagios
100615分散nagios
Mitsutoshi Aoe
Bp study39 nodejs
Bp study39 nodejs
Yohei Sasaki
プロセスの永続化でコスト削減 #perlbeginners
プロセスの永続化でコスト削減 #perlbeginners
鉄次 尾形
人間たちとsystemd
人間たちとsystemd
Uchio Kondo
MySQL Casual Talks Vol.3 LT
MySQL Casual Talks Vol.3 LT
Tomohiro Ikeda
Zabbix study5lt
Zabbix study5lt
Tomohiro Ikeda
Tide - SmalltalkでSPA
Tide - SmalltalkでSPA
Masashi Umezawa
Gulp ことはじめ
Gulp ことはじめ
Kyohei Morimoto
Pyramid
Pyramid
Atsushi Odagiri
Sql alchemy bpstyle_4
Sql alchemy bpstyle_4
Atsushi Odagiri
Weitere ähnliche Inhalte
Was ist angesagt?
WSHで遊ぼう!
WSHで遊ぼう!
bouzuya
Grunt.jsを使った Expressの開発環境構築
Grunt.jsを使った Expressの開発環境構築
kamiyam .
JS開発環境を晒す。
JS開発環境を晒す。
Eiji Kuroda
はてなのNagios - モニカジ#3
はてなのNagios - モニカジ#3
Shoichi Masuhara
[大図解]ピグライフはこう動いている
[大図解]ピグライフはこう動いている
Akihiro Kuwano
Node.jsでブラウザメッセンジャー
Node.jsでブラウザメッセンジャー
Yahoo!デベロッパーネットワーク
Node.js入門
Node.js入門
俊夫 森
Bossan dentoo
Bossan dentoo
kubo39
Djangoフレームワークの紹介
Djangoフレームワークの紹介
Shinya Okano
EWD 3トレーニング・コース #1 Node.jsとGT.Mの統合方法
EWD 3トレーニング・コース #1 Node.jsとGT.Mの統合方法
Kiyoshi Sawada
Ruby way-openstack.keynote
Ruby way-openstack.keynote
Uchio Kondo
NanoStrand
NanoStrand
Masashi Umezawa
100615分散nagios
100615分散nagios
Mitsutoshi Aoe
Bp study39 nodejs
Bp study39 nodejs
Yohei Sasaki
プロセスの永続化でコスト削減 #perlbeginners
プロセスの永続化でコスト削減 #perlbeginners
鉄次 尾形
人間たちとsystemd
人間たちとsystemd
Uchio Kondo
MySQL Casual Talks Vol.3 LT
MySQL Casual Talks Vol.3 LT
Tomohiro Ikeda
Zabbix study5lt
Zabbix study5lt
Tomohiro Ikeda
Tide - SmalltalkでSPA
Tide - SmalltalkでSPA
Masashi Umezawa
Gulp ことはじめ
Gulp ことはじめ
Kyohei Morimoto
Was ist angesagt?
(20)
WSHで遊ぼう!
WSHで遊ぼう!
Grunt.jsを使った Expressの開発環境構築
Grunt.jsを使った Expressの開発環境構築
JS開発環境を晒す。
JS開発環境を晒す。
はてなのNagios - モニカジ#3
はてなのNagios - モニカジ#3
[大図解]ピグライフはこう動いている
[大図解]ピグライフはこう動いている
Node.jsでブラウザメッセンジャー
Node.jsでブラウザメッセンジャー
Node.js入門
Node.js入門
Bossan dentoo
Bossan dentoo
Djangoフレームワークの紹介
Djangoフレームワークの紹介
EWD 3トレーニング・コース #1 Node.jsとGT.Mの統合方法
EWD 3トレーニング・コース #1 Node.jsとGT.Mの統合方法
Ruby way-openstack.keynote
Ruby way-openstack.keynote
NanoStrand
NanoStrand
100615分散nagios
100615分散nagios
Bp study39 nodejs
Bp study39 nodejs
プロセスの永続化でコスト削減 #perlbeginners
プロセスの永続化でコスト削減 #perlbeginners
人間たちとsystemd
人間たちとsystemd
MySQL Casual Talks Vol.3 LT
MySQL Casual Talks Vol.3 LT
Zabbix study5lt
Zabbix study5lt
Tide - SmalltalkでSPA
Tide - SmalltalkでSPA
Gulp ことはじめ
Gulp ことはじめ
Andere mochten auch
Pyramid
Pyramid
Atsushi Odagiri
Sql alchemy bpstyle_4
Sql alchemy bpstyle_4
Atsushi Odagiri
フレームワークなしでWSGIプログラミング
フレームワークなしでWSGIプログラミング
Atsushi Odagiri
メタクラスプロトコル
メタクラスプロトコル
Atsushi Odagiri
Setup.pysetup.cfg
Setup.pysetup.cfg
Atsushi Odagiri
Sqlalchemy sqlの錬金術
Sqlalchemy sqlの錬金術
Atsushi Odagiri
Pythonすいーつ部
Pythonすいーつ部
Atsushi Odagiri
Python3 移行への軌跡
Python3 移行への軌跡
Atsushi Odagiri
Andere mochten auch
(8)
Pyramid
Pyramid
Sql alchemy bpstyle_4
Sql alchemy bpstyle_4
フレームワークなしでWSGIプログラミング
フレームワークなしでWSGIプログラミング
メタクラスプロトコル
メタクラスプロトコル
Setup.pysetup.cfg
Setup.pysetup.cfg
Sqlalchemy sqlの錬金術
Sqlalchemy sqlの錬金術
Pythonすいーつ部
Pythonすいーつ部
Python3 移行への軌跡
Python3 移行への軌跡
Ähnlich wie How To Drink Wsgi
LogicFlow 概要
LogicFlow 概要
Tomoyuki Obi
Djangoフレームワークの紹介 OSC2015北海道
Djangoフレームワークの紹介 OSC2015北海道
Shinya Okano
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!
Yasuaki Matsuda
Salesforce DUG Japan Meetup#9(REST API, Metadata API etc)
Salesforce DUG Japan Meetup#9(REST API, Metadata API etc)
Takahiro Yonei
Swagger jjug ccc 2018 spring
Swagger jjug ccc 2018 spring
kounan13
Inside mobage platform
Inside mobage platform
Toru Yamaguchi
Elastic on Azure Integration & Building React UI Based Search App Using Azure...
Elastic on Azure Integration & Building React UI Based Search App Using Azure...
Shotaro Suzuki
Tokyo Jazug Night 2020-01 Azure Monitor を使った運用監視コトハジメ
Tokyo Jazug Night 2020-01 Azure Monitor を使った運用監視コトハジメ
Tsubasa Yoshino
Nginx
Nginx
Soichi Takamura
イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化
Gosuke Miyashita
20190731 Azure Functions x Line at Azure Tech Lab #4
20190731 Azure Functions x Line at Azure Tech Lab #4
Issei Hiraoka
SwaggerとAPIのデザイン
SwaggerとAPIのデザイン
Kazuhiro Hara
HTML5&API総まくり
HTML5&API総まくり
Shumpei Shiraishi
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Tasuku Otani
Azure Functions&Logic Appではじめるサーバレスアプリケーション開発 - 応用編 -
Azure Functions&Logic Appではじめるサーバレスアプリケーション開発 - 応用編 -
Yoichi Kawasaki
jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発
Akira Inoue
Struts2を始めよう!
Struts2を始めよう!
Shinpei Ohtani
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)
Masanori Ishigami
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発
Yuta Matsumura
Goji とレイヤ化アーキテクチャ
Goji とレイヤ化アーキテクチャ
Shiroyagi Corporation
Ähnlich wie How To Drink Wsgi
(20)
LogicFlow 概要
LogicFlow 概要
Djangoフレームワークの紹介 OSC2015北海道
Djangoフレームワークの紹介 OSC2015北海道
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!
Salesforce DUG Japan Meetup#9(REST API, Metadata API etc)
Salesforce DUG Japan Meetup#9(REST API, Metadata API etc)
Swagger jjug ccc 2018 spring
Swagger jjug ccc 2018 spring
Inside mobage platform
Inside mobage platform
Elastic on Azure Integration & Building React UI Based Search App Using Azure...
Elastic on Azure Integration & Building React UI Based Search App Using Azure...
Tokyo Jazug Night 2020-01 Azure Monitor を使った運用監視コトハジメ
Tokyo Jazug Night 2020-01 Azure Monitor を使った運用監視コトハジメ
Nginx
Nginx
イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化
20190731 Azure Functions x Line at Azure Tech Lab #4
20190731 Azure Functions x Line at Azure Tech Lab #4
SwaggerとAPIのデザイン
SwaggerとAPIのデザイン
HTML5&API総まくり
HTML5&API総まくり
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Azure Functions&Logic Appではじめるサーバレスアプリケーション開発 - 応用編 -
Azure Functions&Logic Appではじめるサーバレスアプリケーション開発 - 応用編 -
jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発
Struts2を始めよう!
Struts2を始めよう!
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発
Goji とレイヤ化アーキテクチャ
Goji とレイヤ化アーキテクチャ
Mehr von Atsushi Odagiri
みんなのPython勉強会#77 パッケージングしよう
みんなのPython勉強会#77 パッケージングしよう
Atsushi Odagiri
async/await の向こう側 PyCon Kyushu 2022
async/await の向こう側 PyCon Kyushu 2022
Atsushi Odagiri
パッケージングの呼び声 Python Charity Talks in Japan 2021.02
パッケージングの呼び声 Python Charity Talks in Japan 2021.02
Atsushi Odagiri
eggとはなんだったのか 栄光のsetuptools
eggとはなんだったのか 栄光のsetuptools
Atsushi Odagiri
pyconjp 2019 LT 今日のsetuptools
pyconjp 2019 LT 今日のsetuptools
Atsushi Odagiri
Pythonでの開発を効率的に進めるためのツール設定
Pythonでの開発を効率的に進めるためのツール設定
Atsushi Odagiri
Pythonとパッケージングと私
Pythonとパッケージングと私
Atsushi Odagiri
パッケージングを支える技術 pyconjp2016
パッケージングを支える技術 pyconjp2016
Atsushi Odagiri
Pyramid入門
Pyramid入門
Atsushi Odagiri
パッケージングの今
パッケージングの今
Atsushi Odagiri
パッケージングの今と未来
パッケージングの今と未来
Atsushi Odagiri
パッケージングの今と未来
パッケージングの今と未来
Atsushi Odagiri
Bplt11 form alchemy
Bplt11 form alchemy
Atsushi Odagiri
Python3でwebアプリ
Python3でwebアプリ
Atsushi Odagiri
Pyconjp2012 memory-of-europython
Pyconjp2012 memory-of-europython
Atsushi Odagiri
What makes pyramid unique
What makes pyramid unique
Atsushi Odagiri
エキPy lt repoze.whoの紹介
エキPy lt repoze.whoの紹介
Atsushi Odagiri
World plonedaylt
World plonedaylt
Atsushi Odagiri
BPStudy#54 そろそろPython3
BPStudy#54 そろそろPython3
Atsushi Odagiri
Form libraries
Form libraries
Atsushi Odagiri
Mehr von Atsushi Odagiri
(20)
みんなのPython勉強会#77 パッケージングしよう
みんなのPython勉強会#77 パッケージングしよう
async/await の向こう側 PyCon Kyushu 2022
async/await の向こう側 PyCon Kyushu 2022
パッケージングの呼び声 Python Charity Talks in Japan 2021.02
パッケージングの呼び声 Python Charity Talks in Japan 2021.02
eggとはなんだったのか 栄光のsetuptools
eggとはなんだったのか 栄光のsetuptools
pyconjp 2019 LT 今日のsetuptools
pyconjp 2019 LT 今日のsetuptools
Pythonでの開発を効率的に進めるためのツール設定
Pythonでの開発を効率的に進めるためのツール設定
Pythonとパッケージングと私
Pythonとパッケージングと私
パッケージングを支える技術 pyconjp2016
パッケージングを支える技術 pyconjp2016
Pyramid入門
Pyramid入門
パッケージングの今
パッケージングの今
パッケージングの今と未来
パッケージングの今と未来
パッケージングの今と未来
パッケージングの今と未来
Bplt11 form alchemy
Bplt11 form alchemy
Python3でwebアプリ
Python3でwebアプリ
Pyconjp2012 memory-of-europython
Pyconjp2012 memory-of-europython
What makes pyramid unique
What makes pyramid unique
エキPy lt repoze.whoの紹介
エキPy lt repoze.whoの紹介
World plonedaylt
World plonedaylt
BPStudy#54 そろそろPython3
BPStudy#54 そろそろPython3
Form libraries
Form libraries
How To Drink Wsgi
1.
How To Drink
WSGI aodag twitter:@aodag http://blog.aodag.jp/
2.
自己紹介 去年の6月まで名古屋のWebシステム会社VISHに所属。 Python Workshop東海01開催 Python東海の立ち上げ Python温泉に参加 (いただきます係) 去年の6月から東京に。 Python
Hack-a-thonに参加。 #1 講師だったけど、誰もこなかった。 #2 なぜか当日講師にされる。 #3 スィーツを打ち出して企画したのに ビターな野郎どもの巣窟に。
3.
WSGI
4.
WSGIとは? Web Server Gateway Interface
5.
WSGIとは?
6.
WSGI その昔 CGIでしか動かないアプリケーション、mod_pythonを前提にしたフ レームワークなどなど フレームワークやアプリケーションを選ぶのに、 利用可能なサーバーによる制限 サーバーとアプリケーションとの間に規格が必要 WSGI PEP333 http://www.python.org/dev/peps/pep-0333/
7.
WSGIサーバー wsgiref 標準ライブラリ flup fcgi/scgi サーバー mod_wsgi apacheモジュール Google App
Engine クラウド
8.
WSGIアプリケーション def hello(environ, start_response):
start_response("200 OK", [("Content-type", "text/plain")]) return ["Hello, world!"]
9.
environ 環境変数
CGI変数 HTTP_ACCEPT QUERY_STRING REQUEST_METHOD CONTENT_TYPE CONTENT_LENGTH PATH_INFO SCRIPT_NAME wsgi変数 wsgi.version wsgi.input wsgi.errors wsgi.multithreaded
10.
start_response レスポンスステータス
"200 OK" レスポンスヘッダー ("Content-Type", "text/plain")
11.
戻り値 strを返すiterator 一番簡単なのは文字列のリスト ["Hello, world!"] でも
["Hello, ", "world!"]でも同じ Listライクオブジェクトでも、generatorでもよし。 ただし、遅延評価は要注意 WSGIでは、chunkedレスポンスを正式にサポートしてません。 遅延させたい人はTornadoを調べてみましょう。
12.
ミドルウェア WSGIアプリケーションは、呼び出し可能オブジェクト WSGIアプリケーションの中からWSGIアプリケーションを呼び出して もいいよね? 関数から関数呼ぶだけですから!
13.
WSGIミドルウェア
14.
WSGIミドルウェア def middleware(app): def
wrap(environ, start_response): # ここで前処理 data = app(environ, start_response) # ここで後処理 return data return wrap
15.
sqlalchemy transactionalミドルウェア def transactional(session):
def dec(app): def wrap(environ, start_response): environ["sa.session"] = session try: data = app(environ, start_response) session.commit() return data finally: session.remove() return wrap return dec
16.
ミドルウェアを使う @permission(role=permissions.Admin) @transactional(session) @wsgify def update(req):
session = req.environ['sa.session'] a = session(model.A).query().all() #なんか操作 session.commit()
17.
WSGI開発の手助け Paste
Request, Responseオブジェクト Basic認証やDigest認証などの認証ミドルウェア PasteDeploy setuptoolsに基づいたミドルウェアコンフィグレーション PasteScript WSGIアプリケーションを起動させるコマンド WebOb PasteのRequest,Responseが書き直されたもの Werkzeug 可搬性の高いDjangoっぽいコンポーネント
18.
テンプレートエンジン Mako 速い Tempita
シンプル Genshi XML Jinja2 Djangoっ ぽい
19.
WSGIを意識したフレームワーク Pylons ほとんどの機能をコンポーネントを集めることで実現しているフレー ムワーク repoze.bfg zopeのコンポーネントを分解した後に、WSGIアプリケーションとして 再構成したフレームワーク
20.
WSGIRef from wsgiref.simple_server import
make_server def application(environ, start_response): start_response("200 OK", [("Content-type", "text/plain")]) return ["Hello, world!"] httpd = make_server('', 8000, application) httpd.serve_forever()
21.
Demo
Jetzt herunterladen