私はスタックとしてnginx、web.py、fastcgi、およびredisを使用しています。Pythonで時間をms単位で測定し、しきい値が満たされた場合に中止する
私はレスポンスを返すために120ミリ秒かかるので、私はいつもレスポンスを測定する必要があります。閾値に近づくには、中止してFalseを返す必要があります。もし私が120の閾値を超えた場合に限り、真実か偽であれば処罰されません。私は10-50K qpsを期待しています。
私は単純に条件を満たすことができますが、長時間実行しているプロセスが懸念されています。終了するまで待つ必要があります。私はパイプライニングを使用しているredisコール。例えば、
start = time.time()
r.get()
end = time.time - start
if end>115 then return False
もしもr.get()が、私は罰金を科せられます。
時間を監視し、監視プロセスなしでアボート信号を送信するには、あまりにも多くのリソースを消費しないでください。スレッドを起動しますか?
タイムアウトを使用しますか?もしそうなら、MSの範囲でどうですか?
おかげ
これはシングルスレッドプログラムで、POSIXを使用している場合はシグナルを使用できます。そうでない場合は、タイムアウトをチェックするために別のスレッドが必要になります。ここで問題となるのは、リクエストスレッドが長時間かかると「中止」することができないということです。それは問題だろうか? –
こんにちは、まあ...私はちょうど時間がかかる場合はfalseを返す必要があります。しかし、スレッドが終了するのを待つことができます。理にかなっている? – Tampa
また、プログラムはシングルスレッドです。 – Tampa