Submit Search
Djangoで業務改善したい
1 like
915 views
Satoshi Yamada
DjangoをつかってPythonの処理をWEBAPI化した話を LTさせていただきました、
Technology
Read more
1 of 21
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
More Related Content
PDF
Goで書くNeoVimプラグイン - OpenAppLab Aizu LT feat. CyberAgent
Reo Yamada
PDF
Laravel5.1 Release
Yuuki Takezawa
PDF
php開発で使うタスクランナー gulp
Yuuki Takezawa
ODP
20101001 5分でわかるtrac pluginの作り方_slideshare
sinsoku listy
PDF
Laravel 5.1 LTSでサービスを作る
infinite_loop
PDF
PHPデプロイツールの世界
Yuuki Takezawa
PDF
PostgreSQLのパラレル化に向けた取り組み@第30回(仮名)PostgreSQL勉強会
Shigeru Hanada
PDF
PostgreSQL実行計画入門@関西PostgreSQL勉強会
Satoshi Yamada
Goで書くNeoVimプラグイン - OpenAppLab Aizu LT feat. CyberAgent
Reo Yamada
Laravel5.1 Release
Yuuki Takezawa
php開発で使うタスクランナー gulp
Yuuki Takezawa
20101001 5分でわかるtrac pluginの作り方_slideshare
sinsoku listy
Laravel 5.1 LTSでサービスを作る
infinite_loop
PHPデプロイツールの世界
Yuuki Takezawa
PostgreSQLのパラレル化に向けた取り組み@第30回(仮名)PostgreSQL勉強会
Shigeru Hanada
PostgreSQL実行計画入門@関西PostgreSQL勉強会
Satoshi Yamada
Viewers also liked
(13)
PDF
[OSC2016沖縄]商用DBからPostgreSQLへの移行入門
Kosuke Kida
PDF
PostgreSQLとPythonとSQL
Satoshi Yamada
PDF
bottle.pyをつかったチャットアプリ作成チュートリアル
Satoshi Yamada
PDF
PostgreSQL SQLチューニング入門 実践編(pgcon14j)
Satoshi Yamada
PDF
bottleで始めるWEBアプリの最初の一歩
Satoshi Yamada
PDF
PostgreSQL 9.6 新機能紹介
Masahiko Sawada
PDF
並列クエリを実行するPostgreSQLのアーキテクチャ
Kohei KaiGai
PDF
(JP) GPGPUがPostgreSQLを加速する
Kohei KaiGai
PDF
まずやっとくPostgreSQLチューニング
Kosuke Kida
PDF
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
Satoshi Yamada
PPTX
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
Miki Shimogai
PDF
PostgreSQLによるデータ分析ことはじめ
Ohyama Masanori
PDF
In-Database Analyticsの必要性と可能性
Satoshi Nagayasu
[OSC2016沖縄]商用DBからPostgreSQLへの移行入門
Kosuke Kida
PostgreSQLとPythonとSQL
Satoshi Yamada
bottle.pyをつかったチャットアプリ作成チュートリアル
Satoshi Yamada
PostgreSQL SQLチューニング入門 実践編(pgcon14j)
Satoshi Yamada
bottleで始めるWEBアプリの最初の一歩
Satoshi Yamada
PostgreSQL 9.6 新機能紹介
Masahiko Sawada
並列クエリを実行するPostgreSQLのアーキテクチャ
Kohei KaiGai
(JP) GPGPUがPostgreSQLを加速する
Kohei KaiGai
まずやっとくPostgreSQLチューニング
Kosuke Kida
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
Satoshi Yamada
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
Miki Shimogai
PostgreSQLによるデータ分析ことはじめ
Ohyama Masanori
In-Database Analyticsの必要性と可能性
Satoshi Nagayasu
Ad
Similar to Djangoで業務改善したい
(15)
PDF
Djangoのススメ
Alisue Lambda
KEY
How to django at first
Maito Kuwahara
PPTX
DjangoでさくっとWeb アプリケーション開発をする話
Nakazawa Yuichi
ODP
Django 1.5 における効果的な MTV 設計 & ネイティブApp
Yikei Lu
PPTX
コボラーがPython始めてみた話
Yuuki Nakajima
PDF
Pythonで始めるtoC向けWebサービス入門
創史 花村
PDF
Djangoのエントリポイントとアプリケーションの仕組み
Shinya Okano
PPTX
Django Rest Frameworkでお手軽にREST APIを作る
Matsuo Keita
PDF
Djangoフレームワークの紹介
Shinya Okano
PPTX
Djangoのチュートリアル
sakihohoribe
ODP
Djangoアプリの実践的設計手法
Ian Lewis
PDF
Teclab3
Eikichi Yamaguchi
PDF
Djangoフレームワークの紹介
Shinya Okano
PDF
Djangoによるスマホアプリバックエンドの実装
Nakazawa Yuichi
PDF
Webフレームワークパネル(Django) at PyConJP 2012
makoto tsuyuki
Djangoのススメ
Alisue Lambda
How to django at first
Maito Kuwahara
DjangoでさくっとWeb アプリケーション開発をする話
Nakazawa Yuichi
Django 1.5 における効果的な MTV 設計 & ネイティブApp
Yikei Lu
コボラーがPython始めてみた話
Yuuki Nakajima
Pythonで始めるtoC向けWebサービス入門
創史 花村
Djangoのエントリポイントとアプリケーションの仕組み
Shinya Okano
Django Rest Frameworkでお手軽にREST APIを作る
Matsuo Keita
Djangoフレームワークの紹介
Shinya Okano
Djangoのチュートリアル
sakihohoribe
Djangoアプリの実践的設計手法
Ian Lewis
Teclab3
Eikichi Yamaguchi
Djangoフレームワークの紹介
Shinya Okano
Djangoによるスマホアプリバックエンドの実装
Nakazawa Yuichi
Webフレームワークパネル(Django) at PyConJP 2012
makoto tsuyuki
Ad
More from Satoshi Yamada
(9)
PDF
Pythonで業務改善をしたときにあった問題(ライト版)
Satoshi Yamada
PDF
pythonでemlファイルを扱う話
Satoshi Yamada
PDF
Requestsで始める5分前帰社
Satoshi Yamada
PDF
DBエンジニアに必要だったPythonのスキル
Satoshi Yamada
PDF
本気でPythonで宛名書きした話
Satoshi Yamada
PDF
10080分でPythonからIP Messeneger
Satoshi Yamada
PDF
15分で情シスに怒られる方法
Satoshi Yamada
PDF
PythonでテキストをJSONにした話(PyCon mini sapporo 2015)
Satoshi Yamada
PDF
201505 PostgreSQLアンカンファレンス(PL/Pythonで作るWEBアプリ)
Satoshi Yamada
Pythonで業務改善をしたときにあった問題(ライト版)
Satoshi Yamada
pythonでemlファイルを扱う話
Satoshi Yamada
Requestsで始める5分前帰社
Satoshi Yamada
DBエンジニアに必要だったPythonのスキル
Satoshi Yamada
本気でPythonで宛名書きした話
Satoshi Yamada
10080分でPythonからIP Messeneger
Satoshi Yamada
15分で情シスに怒られる方法
Satoshi Yamada
PythonでテキストをJSONにした話(PyCon mini sapporo 2015)
Satoshi Yamada
201505 PostgreSQLアンカンファレンス(PL/Pythonで作るWEBアプリ)
Satoshi Yamada
Djangoで業務改善したい
1.
1 株式会社アシスト 山田 聡 @denzowill Djangoで業務改善したくなった
2.
2 だいたいこんな感じで生きてます
3.
3 いままで
4.
アプリケーションA アプリケーションB アプリケーションC XMPP Connector XMPP Connector
Mechanize Wrapper XMPP Connector
5.
5 ● XMPP:オープンなチャットプロトコル ● Mechanize: ブラウザをコードで操作 ● BeautifulSoup: Mechanizeの補助 ● IPMessenger:
IPメッセンジャ
6.
アプリケーションA アプリケーションB アプリケーションC XMPP Connector XMPP Connector
Mechanize Wrapper XMPP Connector
7.
アプリケーションA アプリケーションB アプリケーションC XMPP Connector XMPP Connector
Mechanize Wrapper XMPP Connector Ver 0.4 Ver 0.5 Ver 0.6
8.
8 自作ライブラリが 時期によってばらばら
9.
9 自作ライブラリが 時期によってばらばら →いちいち更新がめんどくさい
10.
アプリケーションA アプリケーションA アプリケーションB アプリケーションC XMPP Connector Mechanize Wrapper
11.
11 中央集権化
12.
アプリケーションA XMPP Connector Mechanize Wrapper Django
13.
13 DjangoだとPythonを WEB化しやすい
14.
14 ● HTTPアクセスでJSONを戻すことにした ● curlで連打されると情シスに怒られる ● 登録・認証しとかないとまずい ● Djangoなら簡単っぽい?
15.
15 ├─IntraCtl -- イントラ操作を自動化 │
├─lib │ └─migrations ├─AuthCtl -- 認証処理 │ ├─lib │ ├─migrations │ └─templates │ └─auth ├─static -- WEBサービスとしての静的ファイル │ ├─css │ ├─fonts │ └─js ├─XmppCtl -- XmppのAPI提供 │ ├─lib │ └─migrations └─YmsftUtilServer -- Djangoのプロジェクト
16.
16 # アクセス許可があるAPIアクセスかのチェック用のデコレータ def check_access_permission(func): import
functools @functools.wraps(func) def wrapper(*args, **kwargs): # 第一引数はrequestオブジェクト request = args[0] # host:port/apiname/xxxxx -> apiname api_url = request.path.split("/")[1] from_addr = get_client_ip(request) token_key = request.META.get('HTTP_AUTHORIZATION') if check_token_auth(api_url, from_addr, token_key): return func(*args, **kwargs) else: return fobbiden_response() return wrapper Authoraization ヘッダをチェックするデコレータ
17.
17 @comm.check_access_permission def post_message(request): ret_dict =
{ u"error": None, u"message": None } if request.method == 'POST': form = XmppSendForm(request.POST) if form.is_valid(): : try: stop_event = threading.Event() exception_event = threading.Event() xmpp_talker_inst = XmppTalker(sender_account, sender_password, ...) : xmpp_talker_inst.join() except XWException as e: ret_dict[u"error"] = True ret_dict[u"message"] = e.message else: ret_dict[u"error"] = True ret_dict[u"message"] = u"POST FORMAT ERROR[%s]" % form.errors.as_json() return HttpResponse( json.dumps(ret_dict), content_type='application/json' ) ほかのView層で使う
18.
アプリケーションA XMPP Connector Mechanize Wrapper Django アプリケーション Client HTTP
通信必要なPOSTパラメータと ヘッダがあればいい
19.
19 class ClientSDKBase(object): def __init__(self,
server_url, token_key): self.server_url = server_url self.token_key = token_key self.encoding = u"utf-8" self.version = u"0.1" @staticmethod def _http_post(url, headers, base_params_dict): response = {} try: params = urllib.urlencode(base_params_dict) req = urllib2.Request(url, params, headers) res = urllib2.urlopen(req) response["body"] = res.read() response["headers"] = res.info().dict except urllib2.URLError as e: raise YmsftSDKException(e.message) ret_body = response["body"] try: return json.loads(ret_body) except ValueError as e: raise YmsftSDKException("When Parse JSON[%s][%s]" % (e.message, ret_body)) Client側
20.
20 #!/usr/bin/env python # -*-
coding: utf-8 -*- from ymsft_util_client import XmppCtlClient import sys # クライアントインスタンス作成 ac = XmppCtlClient("http://localhost:8000/", "b7f6e30e44ec109012a3300ead6bd7f429e4cbe6") # 基本形 print ac.post_message( to_addr="sayamada@xxxxx.co.jp", post_message=u"こんにちは" ) # 送信元アドレス指定 print ac.post_message( to_addr="sayamada@xxxxx.co.jp", post_message=u"こんにちは", sender_account="any_group@xxxxx.co.jp", sender_password="any_group", ) 使い方
21.
21 ● Pythonでかき捨てスクリプトがあるならDjango楽 ● HTTPヘッダも簡単につかえるので認証も楽 ● FormクラスつかえばValidationも簡単 ● クライアントはHTTPさえできれば何でもよい Djangoで簡単に中央集権!
Download