Gevent,WSGI,Gevent Loop以及如何每分钟创建一次全局哈希

时间:2012-12-06 01:43:11

标签: python uwsgi gevent

我将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中提供内容。那么......我错过了什么?

1 个答案:

答案 0 :(得分:2)

我想你是在多处理模式下运行,因此每次只有一个进程会更新它的字典。

有一招:

@rbtimer(60,target ='workers')

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