Sto provando ad avviare una nuova discussione in Python all'interno di un'applicazione Flask. Sto facendo il lavoro in background che viene attivato dalla richiesta, ma non ho bisogno di aspettare che il lavoro sia fatto per rispondere alla richiesta.Fiasco lanciare "lavorare fuori dal contesto della richiesta" all'avvio della sottofodera
È possibile impostare la richiesta del pallone in questa sotto minaccia alla richiesta? Essendo la ragione, il nostro ACL sulle nostre query al nostro DB (mongoengine di fronte a mongoDB) si basa sull'utente della richiesta (lo afferra dall'oggetto di richiesta del flask) per vedere se hanno accesso agli oggetti, e la sua esplosione perché la richiesta è non disponibile nel sottoprocesso.
Ogni pensiero sarebbe molto apprezzato.
Ecco lo pseudo codice di come lo sto gestendo ora, ma non funziona.
@app.route('/my_endpoint', methods=['POST'])
def my_endpoint_handler():
#do tracking in sub-thread so we don't hold up the page
def handle_sub_view(req):
from flask import request
request = req
# Do Expensive work
thread.start_new_thread(handle_sub_view, (request))
return "Thanks"
Se avete solo bisogno che l'utente allora perché non basta passare l'utente nel sub-thread? Il pallone –
fornisce l'accesso alla richiesta in qualsiasi momento, quindi la mia classe Document base ha un gestore di set di query che cattura l'utente dalla richiesta. Il lavoro che sto svolgendo è molto elevato rispetto al set manager di query, quindi non posso semplicemente usare l'utente da solo – MattoTodd
La richiesta è un thread/contesto locale quindi non è disponibile * qualsiasi * volta altrimenti non avresti questo problema . Continuo a pensare che dovresti cercare di rifattorizzare la dipendenza dall'oggetto richiesta. –