2013-07-31 24 views
5

Nel documentation vedo il seguente:Flask e il ridimensionamento e la concorrenza

C'è solo un fattore limitante per quanto riguarda di scala in Flask che sono proxy del contesto locale. Essi dipendono dal contesto che in Flask è definito come thread, processo o greenlet. Se il tuo server utilizza una sorta di concorrenza che non è basata sui thread o sui greenlet , Flask non sarà più in grado di supportare questi proxy globali . Tuttavia, la maggior parte dei server utilizza i thread, i greenlet o processi separati per ottenere la concorrenza, che sono tutti metodi supportati dalla libreria Werkzeug sottostante.

La mia domanda: quali altri meccanismi concorrenti ci sono oltre questi 3 metodi?

risposta

2

Un meccanismo di concorrenza piuttosto interessante è il modello asincrono. Si dispone di un singolo processo con un singolo thread che esegue l'intero spettacolo, con tutte le attività di I/O o altrimenti lunghe che sono asincrone e basate sulla callback. Questo metodo si adatta molto bene ai servizi associati I/O, i server di questa categoria gestiscono facilmente il problema C10K.

Vedere Tornado o node.js per esempi.

+0

Questo è fondamentalmente coperto da greenlet. – Jahaja

+0

@Jahaja: No. I server Web basati su Greenlet sono una cosa, i server web asincroni (event driven) come Tornado sono un'altra cosa. Entrambi raggiungono un obiettivo simile di maggiore concorrenza, ma arrivano usando metodi diversi. In particolare, Flask può funzionare su un server Web basato su Greenlet, ma non si adatta facilmente a un server asincrono. – Miguel

+0

Il mio punto è che entrambe le soluzioni usano ciò che descrivi nei livelli inferiori. Gevent che usa libevent/libev e node.js usando libuv. (ricorda di leggere da qualche parte che gevent 2.0, se rilasciato, può essere basato su libuv.) – Jahaja

Problemi correlati