0

我将 uWSGI 与 gevent 循环一起使用。我还有一个函数,它每分钟从哈希存储的 redis 更新一次 python 字典。

我的实时请求需要访问该哈希。

这是我的 uWSGI 函数,它每 60 秒加载一次哈希。

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'

我注意到即使字典已更新,并非所有请求都尊重该哈希中的内容。即使我有一个空的哈希请求,也会在 prev 哈希中提供内容。所以....我错过了什么?

4

1 回答 1

2

我想您正在多处理模式下运行,因此一次只有一个进程会更新其字典。

有个窍门:

@rbtimer(60,目标='工人')

每次都会在所有工作人员中运行计时器处理程序。

于 2012-12-06T07:02:37.073 回答