問題

Linux上でPythonプログラムを作成して、ログ内の特定のものを検出した場合にアラームを送信するために、書き込まれているようにリアルタイムでログファイルを読み込みます。私はこれをいくつかの理由でasyncioを使用したい - 私はasyncioに基づいて同時に多くのことを行うフレームワークを構築しようとしています、そして私は練習が必要です。

私はasyncioを使用しているので、入力ファイルの最後に書き込まれる行を待つためにブロッキング読み込みを使用したくないことは明らかです。私はselectを使用する必要があると思うが、わからない。

私はこれがかなりシンプルだと思うが、私はこれを行う方法の例を見つけるのは苦労している、または私が前にasyncioで少しダブリングしたにもかかわらず、私自身のものを思いつく。私は読んで、ほとんど私が見つけた他のasyncioの例を理解することができますが、何らかの理由で私自身のasyncioコードを書くのが難しいと感じています。

したがって、誰かが私に例を指摘できれば非常に感謝しています。同じテクニックがファイルではなくstdinから読み込むためにも機能する場合、ボーナスポイント。

  ベストアンサー

私はselectを使用して終わらなければならないと思うが、わからない。私はこれがかなりシンプルだと思うが、私はこれを行う方法の例を見つけるのは苦労している

asyncioでは、asyncioがあなたのためにselect()を選択する必要はありません。結局のところ、select()または同等のものはすべてのイベントループの中心にあります。 Asyncioは、非同期プログラミングモデルに対してコルーチンファサードを実装するストリームのようなabstractionsを提供します。また、select()にフックすることを可能にする -lowerlevel

tail -fの場合、通常のファイルは常に読み込み可能なため、select()を使用することはできません。データがない場合は、EOFを取得し、後で再試行することが予想されます。これは、 inotify のような通知APIを展開するオプションを使用して、tail -fの歴史的に一時停止で読み取りを使用した理由です。

  同じタグがついた質問を見る

pythonlinuxfile-iopython-asyncio