質問: 非同期処理を扱うライブラリかフレームワークを利用することで解決できるのではと思い、`asyncio`, `aiohttp`, `Twisted` などについてドキュメント、サンプルコードを読み自分なりに調べてみて、恐らく `asyncio` を使えばいいのではないかと思っているのですが、その見立てが正しいのか、また、私のケースではどのように書いたらよいのかがわかりません。 `asyncio` のこのあたりが関係するのではないかと思うのですが、よく理解できておりません。 * 非同期処理、`asyncio` で解決する、という考え方は適切でしょうか? * どのように書いたらよいでしょうか? 上記 2 点について可能な範囲で教えていただけませんでしょうか。
回答: 1. gevent, threadなどを使って、ワーカースレッドを作る。 2. ワーカースレッドではデータを受信してqueue.Queue()にデータをプッシュする。 3. メインスレッドではqueueからデータを読みだして適宜処理する。 もう少し高度にやるなら、Eventクラスを作って、Heartbeat(Event)など特化したイベントオブジェクトを作る。ワーカースレッドはqueueにイベントオブジェクトをプッシュする。メインスレッドではイベントループを作って、各種イベント毎にイベントハンドラーを呼び出す。 こんな感じでいかがでしょうか。asyncioを使っても同じことができると思いますが、僕ははまだ試したことがないので、回答できません。