Domanda

Sto cercando un motore di chiamata di procedura remota per Python e ho scoperto che PyRo (Python Remote Object) e RPyC (Remote Python Call) sono entrambi i tipi di cose che sto cercando.

Tuttavia, sono curioso di sapere come si confrontano tra loro e quali sono i loro pro e contro?

È stato utile?

Soluzione

Personalmente li trovo approssimativamente equivalenti, ma l'autore di RPyC ( qui ) rivendica più semplicità (e forse per qualcuno che non era abituato al calcolo distribuito ha un punto; potrei essere troppo abituato per fare un buon giudice ;-). Citandolo ...:

  

sebbene PYRO abbia una lunga lista di   notevoli progetti nel suo curriculum, I   trova anche la configurazione di un server   complicato, se si tiene conto   la quantità di codice necessaria, registrandosi   oggetti, server dei nomi in esecuzione, ecc.   Per non parlare del numero di diversi   concetti che devi considerare (eventi,   rebinding, con o senza nome   server, proxy vs. attributo-proxy,   i nomi devono essere univoci, ecc.). E   è limitato (gli oggetti remoti devono essere   selezionabile in modo da non poter lavorare   file remoti, ecc.). Tutto sommato, PYRO   ha troppi casi speciali ed è   generalmente troppo complicato (sì, io   considera questo complicato). Quindi   ovviamente non sono un recensore indipendente   - ma giudica da solo. RPyC non è più semplice e pulito?

Dall'altro lato della medaglia, PyRO cerca di fornire un po 'di sicurezza (che la tesi dell'autore di RPyC è comunque troppo debole e alla base di molte delle complicazioni dichiarate da PyRO).

Una voce più indipendente, David Mertz, offre qui a buona spiegazione di RPyC (PyRO è in circolazione da molto più tempo e David indica articoli precedenti che lo riguardano). La "modalità classica" è la parte totalmente generica e semplice ea sicurezza zero, "sostanzialmente identica a Pyro (senza il framework di sicurezza opzionale di Pyro)"; la modalità "servizi" è più sicuro (tutto ciò che non è esplicitamente consentito è proibito per impostazione predefinita) e, dice David, " la modalità di servizio è essenzialmente RPC (ad esempio, XML_RPC), modulo alcuni dettagli su convenzioni di chiamata e implementazione " ;. Mi sembra una valutazione equa.

A proposito, non sono particolarmente affezionato ai sistemi RPC in una sola lingua - anche se Python copre il 99% delle mie esigenze (e non è così alto ;-), adoro il fatto che posso usare qualsiasi lingua per il restante 1% ... Non voglio rinunciare al livello RPC! -) Preferirei fare ad es JSON-RPC via questo modulo, o simili ...! -).

Altri suggerimenti

YMMV, ma qui sono i miei risultati dalla valutazione di RPyC, Pyro4 e ZeroRPC per l'uso in un prossimo progetto. Nota che non ci sono test approfonditi, né si tratta di una revisione approfondita, solo i miei appunti su come ciascuno di essi funziona bene per le esigenze del mio prossimo progetto.

ZeroRPC:

  • alcune dipendenze
  • progetto molto giovane (supporto principale di dotCloud)
  • pochissima documentazione
  • non può accedere agli attributi dell'oggetto remoto, solo metodi
  • A causa della mancanza di accesso agli attributi, il completamento della scheda IPython non funziona su oggetti remoti

Pyro4:

  • Supporto Python3
  • Documentazione piacevole e abbondante
  • progetto maturo
  • Nessun accesso agli attributi / completamento della scheda IPython

Pyro3:

  • supporto per l'accesso agli attributi (richiesto nei documenti; non verificato)
  • Nessun supporto Python3

RPyC:

  • accesso agli attributi, completamento della scheda IPython su oggetti remoti
  • Supporto Python3 (richiesto nei documenti; non ancora verificato)
  • documentazione discutibile

FWIW:

Tendo ad apprezzare RPyC (forse perché è stato il mio primo? ;-), ma la sua documentazione è scarsa. È stata la mia prima esposizione a un RPC e mi ci è voluto molto tempo per "grok". come far funzionare le cose. L'autore (Tomer) è molto utile e risponde alle domande frequenti nell'elenco di Google RPyC.

Se non conosci RPC, suggerirei di iniziare con Pyro e trarre vantaggio dalla sua solida documentazione per imparare le corde. Passa a RPyC, ZeroRPC, ecc. Come richiesto dalle tue esigenze.

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