WebサービスAPIによる複数ロボット会話システム

LINEで送る
Pocket

WebサービスAPI利用時の注意点

インターネットは、「ベストエフォート型のサービス」がほとんどである。

一方、常に一定の通信速度や品質を保証している「ギャランティ型サービス」もあるが高価である。

WebサービスAPIなどを利用したシステム開発には、基本的には、「ベストエフォート型のサービス」を前提とした設計が不可欠である。

「ベストエフォート型のサービス」は、通信速度やサービスの質が保証されないので、通信速度の低下などで、リトライエラーが頻繁に発生して、タイムアウトに陥ることがある。

これにより、プログラムで例外が発生して、予期しないプログラム停止となる。

このような事態を防ぐには、「ベストエフォート型のサービス」という前提でシステム開発することが必須である。

プログラミング初心者が陥る落とし穴でもある。

インターネット通信は、エラーがでることを想定したプログラミングを行うことが必要になる。

例外処理で、救済するためのプログラミングが必須となる。

try:

except Exception as e:

のexcept:欄に、インターネットでのエラーを救済するためのプログラミングを施す。

この欄で、最初からやり直すための処置などを施す。

具体的には、例外が発生した日時や例外内容をログとして保存して、インターネットが復旧した段階で、メール通知するなどの処置などを行う。そして、プログラムを継続させて、矛盾がないようにする。

これにより、インターネット品質などを知ることができ、通信品質の改善を行うことができると同時にトランザクション処理も実現できる。

群馬プログラミングカレッジで開発した「複数ロボット会話システム」でもこのような救済処理が運用上必須となった。

インターネット回線を複数で共有する環境では、通信品質が低下して、しばしば、RetryMaxErrorにより、例外が生じる。

pythonのrequestsモジュールを利用して、Webサービスに接続している場合に、度々、例外が生じた。

基本は、「トランザクション処理」の実践である。

群馬プログラミングカレッジでは、pythonプログラム言語を学び、「実務経験」を行うことができます。

子ども達は、子どもプログラミング教室で、Scratchプログラム言語を学び、高学年生は、徐々に高級プログラム言語を学びます。

群馬プログラミングカレッジでは、毎月、プログラミング体験会を実施しておりますので、お気軽にご参加ください。

子どもから成人の方が、継続的にプログラミングを学ぶ場を提供いたします。

複数ロボット会話システム
案内ロボットとして、活躍しています。pythonプログラム言語、PHPプログラム言語で開発しました。
WebサービスAPIを利用して、お互いの会話の同期を制御している。

LINEで送る
Pocket

python2、python3混在のラズパイへのモジュールインストール

LINEで送る
Pocket

python2、python3混在のラズパイへのモジュールインストール

python2とpython3が混在するラズパイへのモジュールインストールについて

新規のmicroSDカードにRaspbian をインストールして、python3環境で動作するpythonプログラムに種々のモジュールをインストールする方法

python3でAI自然会話ロボットを開発しています。

python3プログラムで利用するモジュールのインストール方法

(1)モジュールインストール時の注意

   sudo pip3 install XXXXX(モジュール名)とする。

   pip install XXXXX(モジュール名)とすると、

python2の環境へインストールされるのでpython3環境で 実効すると、
モジュールのインストールエラー(ImportError)がでる。

当該プログラムを実効すると、以下のようなエラーが出る。

以下は、pip install beautifulsoup4 として、beautifulsoup4モジュールをインストールした場合である。

File “/usr/local/lib/python2.7/dist-packages/bs4/__init__.py”, line 53 ‘You are trying to run the Python 2 version of Beautiful Soup under Python 3. This will not work.'<>’You need to convert the code, either by installing it (python setup.py install) or by running 2to3 (2to3 -w bs4).’ ^ SyntaxError: invalid syntax

そこで、 以下は、Janomeのインストール時のLXTerminalの内容 :

pi@raspberrypi:~/Ptna $ sudo pip3 install Janome
Collecting Janome Downloading https://www.piwheels.hostedpi.com/simple/janome/Janome-0.3.6-py3-none-any.whl (20.7MB) 100% |████████████████████████████████| 20.7MB 14kB/s
Installing collected packages: Janome
Successfully installed Janome-0.3.6

以下のように、「/usr/local/lib/python3.5/dist-packages」の環境にインストールされている。

pi@raspberrypi:~/Ptna $ pip3 show janome Name: Janome Version: 0.3.6 Summary: Japanese morphological analysis engine. Home-page: http://mocobeta.github.io/janome/ Author: Tomoko Uchida Author-email: tomoko.uchida.1111@gmail.com License: AL2
Location: /usr/local/lib/python3.5/dist-packages
Requires:

参考: pip3でなく、pipでインストールした場合 (/usr/local/lib/python2.7/dist-packages)というpython2の環境にインストールされる。
pi@raspberrypi:~ $ sudo pip install Janome
Collecting Janome Downloading Janome-0.3.6.tar.gz (20.0MB) 100% |████████████████████████████████| 20.0MB 13kB/s Building wheels for collected packages: Janome Running setup.py bdist_wheel for Janome … done Stored in directory: /root/.cache/pip/wheels/06/3a/df/8a8ca99633cc64d7cb46f0684230d6e9b4b93e581d66709653
Successfully built Janome Installing collected packages: Janome Successfully installed Janome-0.3.6

pi@raspberrypi:~ $ sudo pip install requests
Requirement already satisfied: requests in /usr/lib/python2.7/dist-packages

pi@raspberrypi:~ $ pip show janome

Name: Janome Version: 0.3.6
Summary: Japanese morphological analysis engine.
Home-page: http://mocobeta.github.io/janome/
Author: Tomoko Uchida
Author-email: tomoko.uchida.1111@gmail.com
License: AL2
Location: /usr/local/lib/python2.7/dist-packages
Requires:

pi@raspberrypi:~ $ sudo pip install beautifulsoup4
Collecting beautifulsoup4 Downloading beautifulsoup4-4.6.0-py2-none-any.whl (86kB) 100% |████████████████████████████████| 92kB 1.3MB/s Installing collected packages: beautifulsoup4
Successfully installed beautifulsoup4-4.6.0

pi@raspberrypi:~ $ pip show beautifulsoup4
Name: beautifulsoup4
Version: 4.6.0
Summary: Screen-scraping library Home-page: http://www.crummy.com/software/BeautifulSoup/bs4/
Author: Leonard Richardson
Author-email: leonardr@segfault.org
License: MIT
Location: /usr/local/lib/python2.7/dist-packages
Requires:
pi@raspberrypi:~ $

このようにインストールロケーションが、
Location: /usr/local/lib/python2.7/dist-packages
となる。

結論:
python2とpython3が混在するラズパイで、python3環境でプログラムを実行する場合のモジュールインストールは、

$ sudo pip3 install XXXXX
とする。XXXXXは、モジュール名

pipでなくpip3とすること。

 

LINEで送る
Pocket