2011-10-04 13 views
5

CherryPyを使用してREST API経由でリクエストを受信して​​います。要求を処理すること以外にも、アプリケーションは数秒ごとにリソース管理を行う必要があります。これを行う最も簡単な方法は何ですか?Python Webサーバーと定期的な作業

1)別のスレッド

2を実行します)cherrypy.process.plugins.PerpetualTimer(それを使用する方法がわからない、それがリソースに重いみたいな感じ?)

3)他のいくつかの方法?

別スレッドの解決策は私には問題ありませんが、それを行うにはより良い方法があるのだろうかと思っていましたか?

CherryPyは必須条件ではないことに注意してください。私は主にプロジェクトが生き生きとしていて、複数の同時接続をサポートしているため、これを使用することに決めました(つまり、

答えて

3

PerpetualTimerはthreading._Timerの繰り返しバージョンです。

あなたが実際に使用したいのは、別のスレッドを実行する方法よりも少しだけですcherrypy.process.plugins.Monitorです。 CherryPyサーバーの起動と停止の動作を制御するcherrypy.engineにプラグインするので、使用する必要があります。独自のスレッドを実行する場合は、CPのシャットダウン時にスレッドを停止させたい場合があります。 Monitorクラスはすでにそれを行う方法を知っています。これは、PerpetualTimerを最新のバージョンまで使用し、BackgroundTaskクラスに置き換えられました。

my_task_runner = Monitor(cherrypy.engine, my_task, frequency=3) 
my_task_runner.subscribe() 
+0

完璧、ありがとう!あなたの答えを編集してクラスパッケージ([cherrypy.process.plugins.Monitor](http://docs.cherrypy.org/dev/refman/process/plugins/index.html#cherrypy.process.plugins.Monitor)を修正しました。 )。別の注記では、最後のパラメータの名前が間違っています。「間隔」にする必要があります。もう一度ありがとう、ちょうど私が心に持っていたこと! – johndodo

関連する問題