前提
Flask、socketioで、websocket構築中です。
サーバ(親、PC A)に、クライアント(子 PC B)からアクセスさせてます。
いったんは成功しているのですが、、
サーバが立ち上がっていない時に、クライアントを立ち上げると(PC起動時にアプリも自動起動させてます)、当然エラーになります。
その後しばらくして、サーバを立ちあげても、再接続はされませんでした。
実現したいこと
後からサーバを立ちあげるまで、クライアント側はずっと再接続しようとして欲しいです。
うまくいっている接続(クライアント側)
import asyncio import socketio import time apiUrl = 192.168.1.10:5000 sio = socketio.AsyncClient() @sio.event async def connect(): print('connection established') await sio.emit('client_Connected', {'from': 'client', 'data': 'Connectedです!'}) async def main(): await sio.connect(apiUrl) await sio.wait() # メイン関数 if __name__ == '__main__': asyncio.run(main())
上記に対して、再接続をする方法が分かれば知りたいです。
自分でやってみたのは下記です
該当のソースコード
python
1メイン関数、のところを下記へ 2# メイン関数 3if __name__ == '__main__': 4 connectSocketToServer = True 5 while connectSocketToServer: 6 try: 7 asyncio.run(main()) 8 except: 9 print('error') 10 time.sleep(2)
上記に対して、発生している問題・エラーメッセージ
まずは2秒に一回ターミナルからは、
error
error
error
と予定通り出て、その後
サーバを立ちあげると下記がでます。
このタイミングで接続したいのです。
packet queue is empty, aborting Task was destroyed but it is pending! task: <Task pending coro=<AsyncClient._handle_reconnect() running at /usr/local/lib/python3.7/dist-packages/socketio/asyncio_client.py:431> wait_for=<Future finished result=None>> Task exception was never retrieved future: <Task finished coro=<Event.wait() done, defined at /usr/lib/python3.7/asyncio/locks.py:280> exception=RuntimeError('Task <Task pending coro=<Event.wait() running at /usr/lib/python3.7/asyncio/locks.py:293> cb=[_release_waiter(<Future pendi...x757d40f0>()]>)() at /usr/lib/python3.7/asyncio/tasks.py:366]> got Future <Future pending> attached to a different loop')> Traceback (most recent call last): File "/usr/lib/python3.7/asyncio/locks.py", line 293, in wait await fut RuntimeError: Task <Task pending coro=<Event.wait() running at /usr/lib/python3.7/asyncio/locks.py:293> cb=[_release_waiter(<Future pendi...x757d40f0>()]>)() at /usr/lib/python3.7/asyncio/tasks.py:366]> got Future <Future pending> attached to a different loop
そしてまた、while文のとおり、
error
となり、また前述のエラーが出ます。
どなたかお知恵をお借りできれば助かりますm(__)m
あなたの回答
tips
プレビュー