Kde mohu ukládat data, která se vloží na každou žádost, v aplikaci láhvi pohonem?

hlasů
0

Mám jednoduchý Bottle aplikaci, která ukládá jeho konfiguraci v textovém souboru. Samozřejmě, musím config být k dispozici téměř v každém handler aplikace, a já chci, aby to být přeložen na každou žádost.

V baňce bych mohl nahrát konfigurační soubor do ConfigParserNapříklad v before_requesta dát odkaz na něj do atributu gobjektu, stejně jako je popsáno v dokumentaci která byla použita jako způsob připojení SQLite . gObjekt by pak být k dispozici v každém handler:

@app.before_request
def before_request():
    g.config = load_config()

@app.route('/')
def index():
    param = g.config.get(...)
    ...

V láhvi, na druhou stranu, závit místní obyvatelé jsou považovány za špatné, a navrhl způsob ukládání připojení DB je psát zásuvný modul , který analyzuje manipulátory podpisy s využitím chytrých triků. A zatímco tento problém je již vyřešen pro SQLite, to není v případě některých jiných libovolných dat na vyžádání.

Chcete-li být upřímný, nemůžu uvěřit, že mám napsat 60 řádků kódu, aby něco takového jednoduchý úkol, takže myslím, že je třeba něco chybí.

Nějaké nápady?

Položena 05/07/2011 v 23:19
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
1

Vzhledem k tomu, chcete ho přeložil každý dotaz, proč ne jen použít funkci?

def get_config():
    with open('config.json') as f:
        return json.load(f)

@route('/')
def index():
    config = get_config()
    return 'Welcome to %s' % config['site_name']

Pokud byste chtěli zabalit, že do zásuvného modulu je poměrně jednoduchý:

def config_plugin(callback):
    def wrapper(*args, **kwargs):
        kwargs['config'] = get_config()
        return callback(*args, **kwargs)
    return wrapper

install(config_plugin)

@route('/')
def index(config):
    return 'Welcome to %s' % config['site_name']
Odpovězeno 06/07/2011 v 00:11
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more