Tutto ciò che voglio fare è effettuare alcune chiamate RPC su socket. Ho un server che fa cose di backendish che eseguono jython 2.5. Devo effettuare alcune chiamate da un server di frontend che esegue Django su CPython. Ho battuto la mia testa contro un muro per ottenere qualsiasi forma di IPC.quick-ish python/jython IPC?
La lista delle cose che ho provato:
- Apache Thrift non ha una release reali, solo istantanee. Mi piacerebbe usare qualcosa di stabile.
- JSON-RPC è interessante e dovrebbe essere in grado di eseguire le prese, ma in pratica la maggior parte del implementations sembra funzionare solo su HTTP. L'overhead HTTP è esattamente quello che sto cercando di evitare.
- Protocol Buffers è in realtà solo un protocollo di serializzazione. Da quanto ho capito, protobuf fornisce la generazione di interfacce per RPC, ma è solo l'interfaccia. In realtà scrivere tutto il codice di connessione è compito dell'utente. Se dovessi rimanere bloccato usando le prese, userò semplicemente JSON per la serializzazione. È più semplice e faster.
- Pyro non funziona correttamente con Jython come server. Una sorta di problema di timeout del socket. Ho inviato un messaggio alla mailing list.
- pysage Yay per il passaggio di messaggi! Solo richiede python 2.6 o il modulo di elaborazione (che ha estensioni compilate). Jython è la versione 2.5 e non consente estensioni compilate.
- Candygram è un'interessante alternativa al pysage, ma per quanto posso dire è non mantenuto. Non l'ho nemmeno provato con Jython. Qualche esperienza con esso?
- Twisted Perspective Broker Twisted non funziona su Jython.
So che sarebbe un gioco da ragazzi farlo con XML-RPC, il che mi rende ancora più irritabile. Voglio evitare il sovraccarico di HTTP, ma allo stesso tempo non voglio davvero deprimermi con i socket per implementare il mio protocollo. Lo farò male se lo faccio.
Qualche idea? Probabilmente starò a piangere per circa 20 minuti e poi userò semplicemente XML-RPC.
btw, ho appena trovato questa soluzione alla mia domanda: http://bert-rpc.org/ – Kobold