2015-03-23 19 views
5

Ho un'applicazione di pallone complessa con diverse istanze di Flask inviate dal middleware werkzeug. E in tale situazione ho due domande relative non in realtà con url_for, ma con la gestione del contesto dei flask in realtà.url_for all'interno di diverse istanze di Flask

1) Come si crea l'url da un'applicazione all'altra?

2) Uno principale: come si crea l'URL per un'applicazione specifica senza app_context. Ad esempio ho bisogno di creare qualche URL al momento dell'importazione o dal compito di sedano. Ho cercato di fare involucro su tutte le istanze di applicazioni e ridefinire url_for come

def url_for(self, *args, **kwargs): 
    with self.app.app_context(): 
     return url_for(*args, **kwargs) 

ma appena ricevuto seguente errore "L'applicazione non è stata in grado di creare un adattatore di URL per la richiesta di generazione di URL indipendente. Si potrebbe essere in grado di risolvere questo problema impostazione della variabile di configurazione SERVER_NAME. " Qualche suggerimento?

Update: la mia soluzione per il secondo problema è stato corretto, solo bisogno di aggiungere SERVER_NAME, ma prima è ancora aperto

+1

Hai mai trovato una soluzione? –

+0

Ho terminato di costruire url_builder personalizzato per ogni applicazione e utilizzando i suoi percorsi. Non c'è altro modo, la flask non fornisce alcun supporto per l'architettura multi-app = ( – free2use

+0

Qualche possibilità di condividere una versione generalizzata? –

risposta

1

ho finito per la creazione di creazione URL separati per ogni applicazione

absolute_url_adapter = app.url_map.bind_to_environ({ 
    'wsgi.url_scheme': 'http', 
    'HTTP_HOST': app.config['SERVER_NAME'], 
    'SCRIPT_NAME': app.url_prefix, 
    'REQUEST_METHOD': 'GET', 
}) 

URL_PREFIX - è url, con la quale dispacci dispatcher richieste

Poi in ciascuna applicazione utilizzata in quel modo

absolute_url_adapter.build('main.main', force_external=True) 
Problemi correlati