web.py共享变量

时间:2011-04-15 13:32:56

标签: python web.py

在web.py中,我需要创建一个共享变量,其中包含多个 线程(请求)可以读取或写入该变量。

对于这种情况,首选方式是什么。

感谢。

2 个答案:

答案 0 :(得分:2)

我不确定这是否真的是一个web.py问题,但我们一直在为进程范围的缓存(即所有请求线程共享的dict缓存)执行此类操作。我们使用web.py,但下面的示例应该适用于任何多线程Python Web服务器。

hotels.py:

cache = {}

def load_cache():
    """Load hotels into {id: data} dict cache."""
    rows = db.select('hotels')
    for row in rows:
        cache[row.id] = row

def get_hotel(hotel_id):
    """Get data for hotel with given ID, or return None if not found."""
    if not cache:
        raise Exception('hotels cache not loaded')
    return cache.get(hotel_id)

main.py:

import hotels

def main():
    hotels.load_cache()
    start_server()

答案 1 :(得分:1)

我找到了很多使用这个容器的代码:web.ctx

喜欢

web.ctx.orm = scoped_session(sessionmaker(bind=engine))
web.ctx.session = web.config._session

你可以在函数中初始化它们,然后处理它们:

app.add_processor(web.loadhook(init_func))

不确定您的方案是否有效