0

gevent ループで uWSGI を使用します。また、ハッシュ保存された redis から 1 分に 1 回 Python 辞書を更新する関数もあります。

リアルタイムでの私のリクエストは、そのハッシュにアクセスできる必要があります。

これは、60秒ごとにハッシュをロードする私のuWSGI関数です。

def loadRedisDict():
    global data
    data = r.hgetall('data')

from uwsgidecorators import *
    @rbtimer(60)
    def load_redis(signum):
        loadRedisDict() 

@post('/test')
@post('/test/')
def test(): 
   print data['foo']
   yield 'test'

dict が更新されても、すべてのリクエストがそのハッシュの内容を尊重するわけではないことに気付きました。空のハッシュ リクエストがあっても、前のハッシュでコンテンツを提供しています。だから....私は何が欠けていますか?

4

1 に答える 1

2

マルチプロセッシング モードで実行していると思われるため、一度に 1 つのプロセスだけがその辞書を更新します。

トリックがあります:

@rbtimer(60, target='workers')

毎回すべてのワーカーでタイマー ハンドラを実行します。

于 2012-12-06T07:02:37.073 に答える