Domanda

Le scrivo ora a scrivere del codice evented (in Python utilizzando gevent) e io uso il nginx come web server e mi sento entrambi sono grandi. Mi è stato detto che c'è una via commerciale con eventi, ma non riuscivo a vederlo. Qualcuno può fare una certa luce?

James

È stato utile?

Soluzione

Il problema più grande è che senza fili, un blocco per un cliente causerà un blocco per tutti cliente. Ad esempio, se un cliente richiede una risorsa (file su disco, paging-out di memoria, ecc) che richiede il sistema operativo per bloccare il processo di richiesta, quindi tutti i clienti dovranno aspettare. Un server multithread può bloccare solo l'un cliente e continuare a servire gli altri.

Detto questo, se lo scenario di cui sopra è improbabile (che è, tutti i client richiedono le stesse risorse), quindi event-driven è la strada da percorrere.

Altri suggerimenti

L'unica difficoltà di programmazione evented è che non si deve bloccare, mai. Questo può essere difficile da raggiungere se si utilizzano alcune librerie che sono stati progettati con fili in mente. Se non si controlla queste librerie, un fork () + messaggio IPC è la strada da percorrere.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top