○目標
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関数を使ったデータの送信の速度や回数についてなにか制限があるようでしたら,上限なども教えていただきたいです.
よろしくお願いいたします.
あなたの回答
tips
プレビュー