1

パイロンとペーストを使用して Web アプリケーションを作成しています。HTTP 要求が終了した後にやりたい作業がいくつかあります (電子メールを送信したり、データベースに何かを書き込んだりするなど)、HTTP 要求をブロックしたくありません。

この作業を行うためにスレッドを開始しても問題ありませんか? ペーストがハングしたスレッドなどを強制終了することについて、私はいつもこのようなことを目にします。

ここで他に何ができますか?リクエストを返して、完了後にコードを実行する方法はありますか?

ありがとう。

4

4 に答える 4

0

基本的な質問に直接答えるには、好きなようにスレッドを使用できる必要があります。「ハングしたスレッドを強制終了する」部分は、自分のスレッドではなく、独自のスレッドを貼り付けてクリーンアップすることです。

他にも役立つパッケージなどがありますが、単純なスレッドから始めて、どこまで到達できるかを確認することをお勧めします。そうして初めて、次に何が必要かがわかります。

(ここでは、「Thread.daemon」はほとんど関係ありません。trueに設定すると、開始するスレッドがプロセス全体の終了を妨げることはありません。ただし、そうすることは、プロセスが「クリーンに」終了した場合を意味します(強制的に終了するのではなく)スレッドは、その作業が行われていなくても終了します。それが問題であるかどうか、およびそのようなことをどのように処理するかは、完全にユーザー自身の要件と設計に依存します。

于 2009-12-03T22:36:41.727 に答える
0

pylons プロセスがダウンした場合にタスクを失わないように構成できるため、最善の解決策はメッセージング システムだと思います。特にこの場合は、常にスレッドよりもプロセスを使用します。Python 2.6+を使用している場合は、組み込みのマルチプロセッシングを使用するか、pypiで見つけることができる処理モジュールをいつでもインストールできます(私は新しいユーザーであるため、リンクを投稿できません)。

于 2009-10-28T19:19:36.150 に答える
0

スレッド アプローチを使用できます ( Thead.daemonプロパティを設定すると役立つかもしれませんが、よくわかりません)。

ただし、タスクキューイングシステムを検討することをお勧めします。タスクをキューに配置すると (これは非常に高速です)、リスナーはタスクを非同期で処理できるため、HTTP 要求をすばやく返すことができます。私が知っている Django のタスク キューは 2 つあります。

RabbitMQActiveMQなど、より「エンタープライズ」なメッセージング ソリューションの使用を検討することもできます。

編集:いくつかの良い指針を含む以前の回答。

于 2009-10-22T00:28:54.713 に答える