Tweepy を使用して、自宅のコンピューターで実行して Twitter ストリームを監視できるプログラムを作成しました。Tweepy がこれを行う方法は、基本的に while(true) ループを常に実行することです。今、私がやりたいことは、このプログラムを Django アプリにリンクすることです。これを行う 1 つの方法は、Twitter プログラムをローカル コンピューターに残し、メッセージを受信したときにサーバーのデータベースを更新することです。しかし、サーバーのバックグラウンドで Twitter プログラムを実行するにはどうすればよいか考えていました。私はジャンゴを使用しています。
2 に答える
バックグラウンドで(つまり、要求/応答サイクルの外で)タスクを実行できるタスクキューであるCeleryを使用できます。また、 django-celeryとのdjango統合もあります。
定期的なタスクを実行するように設定できます。つまり、tweetpyを使用して5分ごとにTwitterストリームをチェックし、結果をデータベースに保存します。または、操作で起動するタスクを設定することもできます。つまり、ユーザーがWebアプリで何かをクリックしたときに、バックグラウンドタスクを開始してTwitterをスクレイプします。
この種のトラブルに巻き込まれたくない場合は、代わりにCronを使用してX分ごとに操作を実行するか、簡略化されたキューアプリを使用することもできます。そうは言っても、Celeryは十分にテストされており、信頼性が高く、おそらく追加の努力の価値があります
コメントで発見したように、セロリは理想的ではありません-既存の長時間実行プロセス(クライアント)を監視するには、別の長時間実行プロセスが必要です。
理想的には、常に開いているソケットが必要です (クライアントの無限 while ループのように)。そのため、データがある場合はいつでも、Web ページ上の Twitter フィードの「リアルタイム」ビューを取得できます。
SocketIOと組み合わせたNode.jsは、これを解決するように設計されています。Twitter フィードのリアルタイム ビューアーは一般的なケースであるため、多くの例が浮かんでいます ( streamieはその 1 つです)。
この組み合わせにより、受信するデータに基づいて自動的に更新される JavaScript クライアントが提供されます。更新、ajax ポーリング、cron などは必要ありません。