utilizzando le API di blocco con server non bloccante

3

Usiamo Tornado per il nostro sistema (dietro nginx) e tutto funziona perfettamente.

Ora abbiamo bisogno di integrare una lib client (per Neo4j Graph DB) nel nostro sistema. Il problema è che sta bloccando.

La mia domanda è:

  • è corretto usare librerie di blocco in ambiente non bloccante
  • quali sono le possibili conseguenze se lo facciamo
  • quanto lavoro è richiesto se decidiamo di lanciare la nostra lib asincrona

So che esiste Node che fa tutto in modo non bloccante. Ma non possiamo andare lì perché il nostro core è scritto in Python.

    
posta treecoder 09.08.2011 - 16:42
fonte

1 risposta

6

is it OK to use blocking libs in non-blocking environment

No. Un server non bloccante funziona perché tutto non è bloccante. Nel momento in cui usi un codice di blocco, crei un collo di bottiglia enorme .

I server non bloccanti utilizzano un singolo processo / thread e un ciclo di eventi. Nel momento in cui blocchi all'interno del processo, blocchi l'intero server HTTP.

Questo non verrà ridimensionato.

how much work is involved if we decide to roll our own async lib

Non molto. Basta inserire la libreria esistente nel proprio processo, quindi creare un'API asincrona sottile che dialoga con tale processo tramite stdin / stdout.

    
risposta data 09.08.2011 - 16:50
fonte

Leggi altre domande sui tag