2016-11-15 4 views
4

aiohttp Мой веб-сервер использует глобальную переменную, которая изменяется с течением времени:общегосударственных с aiohttp веб-сервер

from aiohttp import web  

shared_item = 'bla' 

async def handle(request): 
    if items['test'] == 'val': 
     shared_item = 'doeda' 
    print(shared_item) 

app = web.Application() 
app.router.add_get('/', handle) 
web.run_app(app, host='somewhere.com', port=8181) 

Результаты в:

UnboundLocalError: local variable 'shared_item' referenced before assignment

Как бы правильно использовать общую переменную shared_item?

+0

Вы можете классы экземпляра, чтобы действовать в качестве пространств имен для вашего приложения. – shongololo

ответ

3

Напрягите общую переменную в контекст приложения:

async def handle(request): 
    if items['test'] == 'val': 
     request.app['shared_item'] = 'doeda' 
    print(request.app['shared_item']) 

app = web.Application() 
app['shared_item'] = 'bla' 
+0

Спасибо! Мне было трудно найти ответ на этот вопрос. –