2

別のpythonスクリプトが開始されたときに開始され、このスクリプトにデータを返し続けるポーリングスクリプトをpythonで作成しようとしていました。

私は明らかに無限ループを書くことができますが、それは正しい方法ですか? 関数がどのように機能するか、および関数を 1 時間に何回呼び出す必要があるかを制御できなくなる可能性があります。

編集:

私が達成しようとしているのは、Twitter の REST API をポーリングし、新しいメンションと私をフォローしている人を取得することです。1 時間あたりの API リクエストが不足するため、明らかにポーリングを続けることはできません。したがって、問題。このポーラーは、新しいメンションとフォロワー ID/ユーザーを、そのような更新をリッスンするメイン スクリプトに送信します。

4

1 に答える 1

7

リアクター パターンを使用する最も人気のある非同期フレームワークの 1 つであるTwistedを調べることを強くお勧めします。

あなたが探している「無限ループ」は、実際には Twisted が非同期的にイベントに応答するために実装するアプリケーション パターンであり、独自にロールすることはほとんど意味がありません。

Twisted は主にネットワーク要件に使用されますが、LoopingCall必要な種類の機能をセットアップするためのインターフェイスがあります。コア Twisteddeferredをリクエスト モデルとして使用すると、必要な種類の条件付きネットワーク テストを実行できるロング ポーリング サーバーをセットアップできます。最初は少し戸惑うかもしれませんが、継承する必要があるコア コンポーネント (ファクトリ、リアクター、プロトコルなど) を理解すると、問題を視覚化するのがはるかに簡単になります。

これも、「プッシュ」モデルの基本を調べるための良いチュートリアルになるかもしれません: http://carloscarrasco.com/simple-http-pubsub-server-with-twisted.html

于 2012-05-17T21:04:08.987 に答える