Python'da RPC yapmak için mevcut seçim nedir? [kapalı]


132

Aslında, Pyro ve RPyC ile bazı çalışmalar yaptım, ancak bu ikisinden daha fazla RPC uygulaması var. Bunların bir listesini yapabilir miyiz?

Yerel Python tabanlı protokoller:

Pek çok temel protokole sahip RPC çerçeveleri:

JSON-RPC tabanlı çerçeveler:

SABUN:

XML-RPC tabanlı çerçeveler:

Diğerleri:


3
Gerçekten içeriğe bağlı. İnternet? LAN? İnternet sitesi? Dağıtılmış hesaplama? Hızlı prototip mi? Bant genişliği? Mesajların boyutu?
ddaa

@silentghost: tamamlandı. Varsayılan olarak "topluluk wiki" ayarlamamayı tercih ederim, çünkü bazen yanılıyorum :) @ddaa: Herhangi biri. Genel anlamda RPC'yi soruyorum, belirli bağlamlarda bazı artıları / eksileri varsa, lütfen bunları listeye ekleyin.
edomaur

Bir süre önce "gerçek" RPC yapma ihtiyacım vardı (RFC 1050 türü) ve o zaman seçimler pek etkilemedi, bu yüzden çoğunu kendim yapmak zorunda kaldım. Birinin buna iyi bir alternatifi varsa, bunu duymak isterim.
Mattias Nilsson

Python'dan Python'a RPC - PyRo 4'ün en son sürümü SSL'yi desteklemiyor, ancak PyRo 3 hala destekliyor - her ikisi de tamamen Python, bu nedenle Python 2, Python 3, PyPy, Jython ve IronPython'u destekliyorlar. RPyc, SSL'yi desteklerken, Circuits bundan bahsetmiyor.
RichVel

Yanıtlar:


39

XML-RPC , Python standart kitaplığının bir parçasıdır:


Basitlik için XML-RPC'ye +1, SimpleXMLRPCServer'ın düzgün hata işlemeden yoksun olduğu hesaba katılsa bile.
Denis Otkidach

1
"Uyarı xmlrpc.server modülü kötü niyetli olarak oluşturulmuş verilere karşı güvenli değildir.", Bu nedenle oldukça sınırlı kullanım alanlarına sahiptir.
Equidamoid

1
@Equidamoid Güvenilmeyen veya kimliği doğrulanmamış verileri ayrıştırmanız gerekiyorsa docs.python.org/2/library/xml.html#xml-vulnerabilities
AmaChefe

17

Apache Thrift , Facebook'ta geliştirilmiş bir diller arası RPC seçeneğidir. Soketler üzerinden çalışır, işlev imzaları metin dosyalarında dilden bağımsız olarak tanımlanır.


Thrift, Python 3'ü desteklemiyor henüz desteklenmiyor, bu utanç verici
Roberto

Kişisel yorum: Tasarruf bir bakım kabusu. Karşılaştırılabilir yapılandırma bayrakları kullanan iki Linux dağıtımı görmedim. Çok uzun zaman önce (kaynaktan 0.10.0 oluşturduğumda), mevcut Ubuntu, Debian veya Fedora gibi "egzotik" sistemler üzerine kurulmasını sağlamak için özelliklerin çoğunun devre dışı bırakılması gerekiyor. Başlık altındaki veri türü değişiklikleri, C ++ kullanımını bir karmaşa haline getiriyor #ifdefve 12 yıllık varoluşta, yazılımlarının 1.0.0 sürümüne hazır olduğuna kendilerini ikna etmeyi başaramadılar. Desteklenen çok sayıda dili seviyorum, ancak bence bu onların zayıflığı: çok fazla yapmaya çalışmak.
Marcus Müller

(Tasarrufu sürdürdüğüm orta ölçekli bir GNU Projesinde kullanıyorum. @Roberto, tasarruf desteği Py3, en azından şimdiye kadar.)
Marcus Müller

İnsanları gerçekten PHP'yi C ++ 'ya, Java'yı Python'a, Erlang'dan Common Lisp'den Haskell'den Swift'e bağlamaya çalışan bir diller arası çerçeveye gerçekten ihtiyacınız olup olmadığını düşünmeye teşvik ediyorum . Bunların farklı diller olmasının bir nedeni var ve Thrift'in ortak bir payda bulmak için taviz vermesi gerekiyor. İnsanların büyük çoğunluğunun gerçekten sadece 1 veya 2 farklı dili birbirine bağlaması gerektiğini ve daha ince bir çerçevenin tercih edileceğini iddia ediyorum.
Marcus Müller

7

Bu soruyu sorduğumdan beri python-symmetric-jsonrpc kullanmaya başladım . Oldukça iyidir, python ve python olmayan yazılımlar arasında kullanılabilir ve JSON-RPC standardını takip eder. Ancak bazı örneklerden yoksundur.



3

SOAP'u python ile çalıştırmaya yönelik bazı girişimler var, ancak ben pek test etmedim, bu yüzden iyi olup olmadığını söyleyemem.

SOAPy bir örnektir.


2
SOAP çerçevelerinin çoğunu kullandım ve yansıma tabanlı RPC yapmak için bir tane uyguladıktan sonra, tavsiyem basit - bunu yapma. Çapraz dil iletişimine + bağımsız arayüz açıklamalarına + özel sınıflarla eşleştirmeye ihtiyacınız yoksa, SOAP'ın karmaşıklığı sadece bir baş ağrısı olacaktır. Kullanmanız gerekse bile, hangi SOAP alt kümesinin güvenli olduğunu bilmek için deneyime ihtiyacınız olacak.
Karıncalar Aasma

3
SABUN genel olarak ve özellikle Python'da bir kabustur. Zorlamadıkça kullanmayın.
Denis Otkidach

4
SOAP ile ilgili sınırlı deneyimim buradaki diğer yorumlarla aynı fikirde. xmlrpc genellikle ihtiyacım olan her şeyi yapar.
Mattias Nilsson

3

Yeni bir ORB / RPC çerçevesinin python 2.6+ ve 3.x uygulaması olan Versile Python'u (VPy) geliştiriyoruz . İnceleme ve test için işlevsel AGPL geliştirme sürümleri mevcuttur . VPy, genel bir yerel nesne katmanı ( kod örneği ) aracılığıyla PyRo ve RPyC'ye benzer yerel python özelliklerine sahiptir . Ürün, Versile Platform uygulamaları için platformdan bağımsız uzak nesne etkileşimi için tasarlanmıştır .

Tam açıklama: VPy'yi geliştiren şirket için çalışıyorum.


2

SABUN uygulayan ZSI olabilir. Saplama oluşturucuyu kullandım ve düzgün çalıştı. Karşılaştığım tek sorun, SOAP üzerinden HTTPS yapmakla ilgili.


1

OmniORB'u kaçırdınız . Bu oldukça eksiksiz bir CORBA uygulamasıdır, bu nedenle onu CORBA desteğine sahip diğer dillerle konuşmak için de kullanabilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.