はじめに
だんないよ、nikkieです。
1時間ほどもくもくしてきたので、成果発表をベースにブログに残します。
勉強会の概要
Azureもくもく会@新宿 No.20 - connpass
みんなで集まって、Microsoft Azureに関する作業をする会です。
新しい機能を試したり周りと相談したりしてAzureを楽しみましょう。
20回記念の今回のテーマは「みんな好きなことをやろう!」でした。
業務でWebApps × Flask × Azure DB for MySQLを使っているのですが、調べきれていないところを調べる時間にしました。
調査事項
Azure DB for MySQLのSSL設定
MySQLWorkbenchやFlaskのアプリケーションでのSSL接続の方法を調べる時間的猶予がなく、
SSL接続を無効にして使ってきました。気になっていたので調べました。
以下のドキュメントを参考にするとよさそうです。
https://docs.microsoft.com/ja-jp/azure/mysql/howto-configure-ssl:tilte
- ドキュメント中のリンクからSSL証明書を取得
- MySQLWorkbenchから接続する場合
- SSL CA Fileを設定する
- Flaskのコードから接続する場合(Flask-SQLAlchemy使用)
Web Apps × FlaskでDBを使うときのベストプラクティス?を調べる
気になっていたこと: 循環import
https://twitter.com/ftnext/status/1006188837519814656
Azure WebApps x Flaskの組合せで少しつまづいた。
wfastcgiはmain.py (1)をimportしているらしく、循環import (2)が発生した
(1)app.run するファイル(ローカルサーバ立てるのに走らせる)
(2)main.py でappを作ってからSQLAlchemyのdbを作る(続
https://twitter.com/ftnext/status/1006189297639100416
循環import続き
main.py でSQLAlchemyのdb使ったモジュールimportしにいく →そのモジュールではmain.py からdbをimportする必要があるで循環発生
「SQLAlchemyのdb使ったモジュール」をmain.py の先頭から使っている関数の先頭に移したらエラーは消えた
ご助言いただきました。誠にありがとうございます!
オライリーのflask本の人のチュートリアルのデータベースのやつ https://t.co/k079qwjqZl
— ヤエガッシー (@yaegassy) 2018年6月12日
そして flask本の2ndエディション。Mega-Tutorialのチュートリアルのと結構かぶってますが。あと、どちらも英語ですが。。これで少しflaskに強くなれる https://t.co/h50w1Nr1lZ
— ヤエガッシー (@yaegassy) 2018年6月12日
教えていただいたThe Flask Mega-Tutorial Part IV: Database - miguelgrinberg.comや
以前触ったことがあった2. Flaskチュートリアル — study flask 1 ドキュメントをもとに試行錯誤していました。
今回できたもの:https://gist.github.com/ftnext/63279bed7b1d0dbe0ab5015682fb78c0
- 2つのチュートリアルのようにappとdbを作ったあとにimport文を書くのがおそらく肝。
- どちらのチュートリアルも
__init__.py
でFlaskインスタンスを作っているが、これはWebAppsにデプロイするときにweb.configにどう書けばいい?2
感想
- 既存の Azure App Service と Azure Database for MySQL の接続 | Microsoft Docsに「方法 1 - すべての IP アドレスを許可するファイアウォール ルールを作成する」とあるのを発見。元も子もない解決策のような。。
- もしかしたらDockerでFlaskサーバを動かす方法確立しちゃうほうが早いかも(WebApps利用はベンダーロックインされるように思えてきた。。)←AKS調査の成果発表の影響もあるかも
- CustomVisionServiceで物体検知が可能になっていることを知った(サッカーの試合シーンからサッカーボールを検知するデモ)。機械学習の結果がAPIからどんどん利用できるようになってるな〜。学習済みのモデルが返すJSONには精度順に検出した物体情報が含まれるとのことで、APIの仕様、気になります。
Azureの最新情報も収集でき、成果発表の機会もいただき、どうもありがとうございました。皆さまお疲れさまでした。
脚注
-
未検証です。今回調べた限りでは動作するのだろうと期待しています. http://docs.sqlalchemy.org/en/latest/core/engines.html#sqlalchemy.create_engine↩
-
<add key="WSGI_ALT_VIRTUALENV_HANDLER" value="main.app" />
https://github.com/Azure-Samples/python-docs-hello-world/blob/master/web.3.4.config#L4 の部分のことです。main.pyのappはこれでimportできるようなのですが、app/__init__.py
のmyappはどう書けばimportされるのでしょうか?(宿題事項)↩