我将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'
我注意到即使更新了dict,并非所有请求都遵循该哈希中的内容。即使我有一个空的哈希请求,也要在prev hash中提供内容。那么......我错过了什么?
答案 0 :(得分:2)
我想你是在多处理模式下运行,因此每次只有一个进程会更新它的字典。
有一招:
@rbtimer(60,target ='workers')
每次都会在所有工作程序中运行计时器处理程序。