开发者

web.py shared variables

开发者 https://www.devze.com 2023-02-25 06:41 出处:网络
In web.py i need to create a shared vari开发者_如何学JAVAable, for which multiple threads(requests) can read or write to that variable.

In web.py i need to create a shared vari开发者_如何学JAVAable, for which multiple threads(requests) can read or write to that variable.

What is the preferred way, for this kind of a situation.

thanks.


I'm not sure this is really a web.py question, but we do this sort of thing all the time for process-wide caches (that is, dict caches that are shared by all request threads). We use web.py, but my example below should apply to any multi-threaded Python web server.

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()


I find lots of code using this container: web.ctx

like

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

u can init those in a function, then process them:

app.add_processor(web.loadhook(init_func))

Not sure it works or not for your scenario

0

精彩评论

暂无评论...
验证码 换一张
取 消