質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%

Q&A

0回答

2891閲覧

pythonでsendを使ってデータ送信を行う際のエラーについて

YuEndo

総合スコア8

1グッド

0クリップ

投稿2015/12/07 17:27

編集2022/01/12 10:55

○目標

2台のPC間でデータの送受信を行うプログラム(python)の実装

送信速度:10回/1秒程度

開発環境:Windows8, python2.7

○現状

公式で用意されているpython用SDK(https://github.com/milk-cocoa/python_sdk)を利用し,データの送受信を試みています.データの送信にはsend関数を使用し,on関数で受け取って表示するようにしています.

送信側プログラム

python

1from milkcocoa import milkcocoa as mlkcca 2import time 3 4mlk_cnt = mlkcca.Milkcocoa.connect('*******', useSSL=False, blocking=False) 5 6datastore = mlk_cnt.datastore('python') 7 8c = 0 9while(True): 10 datastore.send({'count':str(c)}) 11 time.sleep(0.1) 12 c += 1 13

受信側プログラム

python

1from milkcocoa import milkcocoa as mlkcca 2import time 3 4mlk_cnt = mlkcca.Milkcocoa.connect('*******', useSSL=False, blocking=False) 5datastore = mlk_cnt.datastore('python') 6 7def on_push(e): 8 print e 9 10datastore.on("send", on_push) 11 12 13while(True): 14 time.sleep(1)

現状では1秒に約10回データを送り,同時に受信することができています.しかし,ある程度データを送り続けると送信側のプログラムで以下の様なエラーが表示され,送信が止まってしまいます.

C:\******\src>python test.py Connected with result code 0 Exception in thread Thread-1: Traceback (most recent call last): File "C:\python27\lib\threading.py", line 810, in __bootstrap_inner self.run() File "C:\python27\lib\threading.py", line 763, in run self.__target(*self.__args, **self.__kwargs) File "C:\******\******\python_sdk-master\python_sdk-master\src\paho\mqtt\ client.py", line 2286, in _thread_main self.loop_forever() File "C:\******\******\python_sdk-master\python_sdk-master\src\paho\mqtt\ client.py", line 1261, in loop_forever rc = self.loop(timeout, max_packets) File "C:\******\******\python_sdk-master\python_sdk-master\src\paho\mqtt\ client.py", line 811, in loop rc = self.loop_read(max_packets) File "C:\******\******\python_sdk-master\python_sdk-master\src\paho\mqtt\ client.py", line 1073, in loop_read rc = self._packet_read() File "C:\******\******\python_sdk-master\python_sdk-master\src\paho\mqtt\ client.py", line 1474, in _packet_read rc = self._packet_handle() File "C:\******\******\python_sdk-master\python_sdk-master\src\paho\mqtt\ client.py", line 1942, in _packet_handle return self._handle_publish() File "C:\******\******\python_sdk-master\python_sdk-master\src\paho\mqtt\ client.py", line 2117, in _handle_publish self._handle_on_message(message) File "C:\******\******\python_sdk-master\python_sdk-master\src\paho\mqtt\ client.py", line 2273, in _handle_on_message self.on_message(self, self._userdata, message) File "C:\******\******\python_sdk-master\python_sdk-master\src\milkcocoa\ milkcocoa.py", line 38, in on_message self.datastores["/".join(topic_arr)].fire(event, str(msg.payload)) KeyError: '$sys'

送信側のプログラムの送信頻度を早くするほど,すぐにこのエラーが出て止まってしまいます.送信回数をカウントした結果,1秒10回程度の送信速度の場合7000回程度,sleepを行わず最も速く送信した場合78000回程度の送信回数でエラーが出力されます.

リアルタイムで長時間,データの送受信を行いたいので,このエラーの原因を教えていただきたいです.
milkcocoaを触り始めたばかりであまり詳しくわかっていないということもあり,send関数を使ったデータの送信の速度や回数についてなにか制限があるようでしたら,上限なども教えていただきたいです.
よろしくお願いいたします.

anzaitetsu👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問