スポンサーリンク

PythonのWebアプリケーションフレームワークFalcon

PythonのWAF(Web Application Flamework)といえば、DjangoかFlaskであるが、Falconという、WebAPI専用のWAFもあるらしい。

フロントエンドを別に作成しなければならないが、フロントエンドはphpなどで十分だと思われる。(私はJavascriptが超苦手、もちろん、他の言語も全く分からないが、、、)

<そもそも、、、>

フロントエンドのサーバで契約しているのがphpしか使用できない状況である。バックエンドでpythonで機械学習した結果をWEB APIにして、フロントエンドから画像をWEB APIにアップロードして、推測の結果をJSONで返して、フロントエンドでその推測の結果を表示したい。

そのためには、

(1)バックエンドで、pythonで、フロントエンドから画像の情報を受け取り、推測を行い、結果をJSONでフロントエンドに返す

(2)フロントエンドで、phpで、バックエンドに画像の情報を送り、バックエンドから帰ってきた情報を、再度、フロントエンドで表示する

ことが必要である。

(環境)
Windows 8.1
Anaconda 4.4.0
Python 3.6.1
Tensorflow 1.2.1
Keras 2.0.6
Ruby 2.3.3
Rails 5.1
Git

(1)バックエンド

本当はFlaskで実装したかったのであるが、ググっても日本語は、以下のサイトしか見つからず。

 

英語だと、これかな?

https://github.com/ansrivas/keras-rest-server

→ Python 2 なので、できれば避けたい

https://shuaiw.github.io/2017/02/01/deep-learning-model-as-rest-api.html
Deep Learning Model as REST API
Feb 1, 2017

コードの一部がのっているが、この情報だけでは、私には無理。

https://medium.com/@kashyapraval/image-classification-api-deep-learning-d0b0f67d0ce

けっこうコードが書いてある。

これをコピペできるか???かなり難しそう

https://stackoverflow.com/questions/11914472/stringio-in-python3

try:
    from StringIO import StringIO
except ImportError:
    from io import StringIO

これを訂正しても、なぜだか、

というエラーが出てダメだった。

(2)続いて、以下のサイトを写経して、fallconでHello Worldしてみる。

https://qiita.com/Yaruki00/items/efe23a0e91579aec9398

Anaconda Promptで、

pip install falcon

python sample.py

WEBブラウザで、http://localhost:8000/sample を開くと、以下のようになる。

Anacond PromptでCtrl+Cでサーバ停止

次は、以下のサイトを写経してみたい

http://blog.apitore.com/2017/09/27/python-webapi-falcon/

 

(参考1)

PHP file_get_contentsでAPIサーバーにGET,POST,画像アップロード
http://symfoware.blog68.fc2.com/blog-entry-1885.html

Pythonで画像処理のWebAPIを作る ~Falcon編~
2017-09-27 BY KEIGO HATTORI
http://blog.apitore.com/2017/09/27/python-webapi-falcon/

Python の Flask で REST API を作ってみる
http://momijiame.tumblr.com/post/39378516046/python-%E3%81%AE-flask-%E3%81%A7-rest-api-%E3%82%92%E4%BD%9C%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B

(参考2)

PHPでのファイルアップロードのおさらい
zaburo
2015年05月24日に投稿
https://qiita.com/zaburo/items/80b94bce19a4a670e465

POST メソッドによるアップロード
http://php.net/manual/ja/features.file-upload.post-method.php

AI,Python

Posted by twosquirrel