in che modo flask gestisce le richieste simultanee? [duplicare]

Nov 18 2020

la mia app flask fa quanto segue: l'utente carica il file - il file viene elaborato -> flask restituisce il file

Ero curioso di sapere cosa succede se due utenti accedono simultaneamente al sito web ed eseguono la stessa operazione.

Ho usato il server selenio in combinazione con ray per eseguire una richiesta simultanea sull'app

codice in forma abbreviata

ray.init()

@ray.remote
def parallel_1():
    driver = webdriver.Remote(
        command_executor="http://localhost:4444/wd/hub",
        desired_capabilities={
            "browserName": "chrome",
        })

# do task


ret_id1 = parallel_1.remote()
ret_id2 = parallel_1.remote()
ret1, ret2 = ray.get([ret_id1, ret_id2])


le funzioni di visualizzazione della fiaschetta sono semplici, niente thread o sessioni, c'è qualcosa che sta succedendo sotto il cofano di cui non sono a conoscenza? o come gestisce flask le richieste simultanee?

Risposte

3 Thomas Nov 18 2020 at 17:33

Flask no. La gestione delle richieste parallele è l'attività del server Web WSGI sottostante, che invia le richieste a Flask per la gestione.

Il server di sviluppo integrato di Flask che viene richiamato con Flask.run()esecuzioni con thread per impostazione predefinita

In produzione, useresti uno dei contenitori WSGI o altre opzioni di distribuzione e lì controlli il parallelismo. Gunicorn , ad esempio, ha l' -wargomento della riga di comando che controlla il numero di processi di lavoro e -kche controlla il modo in cui funzionano questi lavoratori (processi, thread o una macchina degli eventi Tornado, tra gli altri).