ตัวเลือกปัจจุบันสำหรับการทำ RPC ใน Python คืออะไร? [ปิด]


132

อันที่จริงฉันได้ทำงานบางอย่างกับ Pyro และ RPyC แต่มีการใช้งาน RPC มากกว่าสองสิ่งนี้ เราสามารถสร้างรายชื่อได้หรือไม่?

โปรโตคอลที่ใช้ Python ดั้งเดิม:

เฟรมเวิร์ก RPC ที่มีโปรโตคอลพื้นฐานมากมาย:

เฟรมเวิร์กที่ใช้ JSON-RPC:

สบู่:

เฟรมเวิร์กที่ใช้ XML-RPC:

อื่น ๆ :


3
มันขึ้นอยู่กับบริบทจริงๆ อินเทอร์เน็ต? LAN? เว็บไซต์? การคำนวณแบบกระจาย? ต้นแบบด่วน? Bandwidth? ขนาดของข้อความ?
ddaa

@silentghost: เสร็จแล้ว ฉันไม่ต้องการตั้งค่า "community wiki" เป็นค่าเริ่มต้นเพราะบางครั้งฉันก็ผิด :) @ddaa: ใด ๆ ฉันกำลังถามเกี่ยวกับ RPC โดยทั่วไปหากพวกเขามีข้อดี / ข้อเสียในบริบทที่เฉพาะเจาะจงโปรดเพิ่มลงในรายการ
edomaur

ฉันมีความจำเป็นต้องทำ RPC แบบ "จริง" เมื่อไม่นานมานี้ (รุ่น RFC 1050) และตัวเลือกก็ไม่ได้สร้างความประทับใจให้มากนักดังนั้นฉันจึงต้องทำส่วนใหญ่ด้วยตัวเอง หากใครมีทางเลือกที่ดีฉันอยากฟัง
Mattias Nilsson

สำหรับผู้ที่ต้องการ Python-to-Python RPC - PyRo 4 เวอร์ชันล่าสุดไม่รองรับ SSL แต่ PyRo 3 ยังคงทำอยู่ - ทั้งคู่เป็น Python ทั้งหมดดังนั้นจึงรองรับ Python 2, Python 3, PyPy, Jython และ IronPython RPyc รองรับ SSL ในขณะที่ Circuits ไม่ได้กล่าวถึงสิ่งนี้
RichVel

คำตอบ:


39

XML-RPCเป็นส่วนหนึ่งของไลบรารีมาตรฐาน Python:


+1 เป็น XML-RPC เพื่อความเรียบง่ายแม้กระทั่งการลงบัญชีว่า SimpleXMLRPCServer ยังขาดการจัดการข้อผิดพลาดที่เหมาะสม
Denis Otkidach

1
"คำเตือนโมดูล xmlrpc.server ไม่ปลอดภัยจากข้อมูลที่สร้างขึ้นเพื่อประสงค์ร้าย" ดังนั้นจึงมีข้อ จำกัด ในการใช้งานที่ค่อนข้าง จำกัด
Equidamoid

1
@Equidamoid หากคุณต้องการแยกวิเคราะห์ข้อมูลที่ไม่น่าเชื่อถือหรือไม่ได้รับการพิสูจน์ตัวตนโปรดดูdocs.python.org/2/library/xml.html#xml-vulnerabilities
AmaChefe

17

Apache Thriftเป็นตัวเลือก RPC ข้ามภาษาที่พัฒนาบน Facebook ทำงานผ่านซ็อกเก็ตลายเซ็นของฟังก์ชันถูกกำหนดในไฟล์ข้อความด้วยวิธีที่ไม่ขึ้นกับภาษา


Thrift ไม่รองรับ Python 3 ยังไม่รองรับนั่นเป็นเรื่องน่าเสียดาย
Roberto

ความคิดเห็นส่วนตัว: Thrift เป็นฝันร้ายในการซ่อมบำรุง ฉันไม่เคยเห็นลินุกซ์สองตัวที่ใช้แฟล็กกำหนดค่าที่เทียบเคียงกันได้ เมื่อไม่นานมานี้ (เมื่อฉันสร้าง 0.10.0 จากซอร์ส) คุณลักษณะส่วนใหญ่จำเป็นต้องปิดใช้งานเพื่อให้สร้างบนระบบ "แปลกใหม่" เช่น Ubuntu, Debian หรือ Fedora ในปัจจุบัน การเปลี่ยนแปลงประเภทข้อมูลภายใต้ประทุนทำให้การใช้งาน C ++ เป็นเรื่องยุ่งเหยิง#ifdefและในช่วง 12 ปีของการดำรงอยู่พวกเขาไม่สามารถโน้มน้าวตัวเองได้ว่าซอฟต์แวร์ของตนพร้อมสำหรับการเปิดตัว 1.0.0 แล้ว ฉันชอบภาษาจำนวนมากที่รองรับ แต่ฉันคิดว่านั่นคือจุดอ่อนของพวกเขานั่นคือพยายามทำมากเกินไป
Marcus Müller

(ฉันใช้ความประหยัดในโครงการ GNU ขนาดกลางที่ฉันดูแลอยู่ @ Roberto สนับสนุน Py3 อย่างน้อยก็ตอนนี้)
Marcus Müller

ฉันจริงๆขอแนะนำให้คนที่จะคิดเกี่ยวกับว่าคุณจริงๆต้องมีกรอบข้ามภาษาที่แท้จริงพยายามเชื่อมต่อ PHP เพื่อ c ++ Java เพื่องูหลาม Erlang เพื่อ Common เสียงกระเพื่อมไป Haskell ไปสวิฟท์ ภาษาเหล่านี้เป็นภาษาที่แตกต่างกันด้วยเหตุผลและ Thrift จำเป็นต้องประนีประนอมเพื่อหาตัวส่วนร่วม ฉันขอยืนยันว่าคนส่วนใหญ่ต้องการเพียงแค่เชื่อมต่อภาษาที่แตกต่างกัน 1 หรือ 2 ภาษาเท่านั้นและกรอบที่บางกว่าจะดีกว่า
Marcus Müller

7

ตั้งแต่ผมเคยถามคำถามนี้ผมได้เริ่มต้นใช้หลามสมมาตร jsonrpc ค่อนข้างดีใช้ได้ระหว่างซอฟต์แวร์ python และ non-python และเป็นไปตามมาตรฐาน JSON-RPC แต่ขาดบางตัวอย่าง


6

คุณสามารถลอง Ladon ให้บริการโปรโตคอลเว็บเซิร์ฟเวอร์หลายรายการพร้อมกันเพื่อให้คุณสามารถเสนอความยืดหยุ่นได้มากขึ้นในฝั่งไคลเอ็นต์

http://pypi.python.org/pypi/ladon


3

มีความพยายามบางอย่างในการทำให้ SOAP ทำงานร่วมกับ python ได้ แต่ฉันยังไม่ได้ทดสอบมากนักดังนั้นฉันจึงไม่สามารถพูดได้ว่ามันดีหรือไม่

SOAPyเป็นตัวอย่างหนึ่ง


2
เมื่อใช้กรอบ SOAP ส่วนใหญ่และนำไปใช้ในการทำ RPC ตามการสะท้อนด้วยตัวเองคำแนะนำของฉันนั้นง่ายมาก - อย่าทำอย่างนั้น หากคุณไม่ต้องการการสื่อสารข้ามภาษา + คำอธิบายอินเทอร์เฟซอิสระ + การแมปไปยังคลาสที่กำหนดเองความซับซ้อนของ SOAP จะทำให้ปวดหัวเท่านั้น แม้ว่าคุณจะจำเป็นต้องใช้ แต่คุณจะต้องมีประสบการณ์ในการรู้ว่า SOAP ชุดย่อยใดที่ปลอดภัยที่จะใช้
Ants Aasma

3
SOAP เป็นฝันร้ายโดยทั่วไปและโดยเฉพาะใน Python อย่าใช้มันจนกว่าคุณจะถูกบังคับ
Denis Otkidach

4
ประสบการณ์ที่ จำกัด ของฉันกับ SOAP เห็นด้วยกับความคิดเห็นอื่น ๆ ที่นี่ xmlrpc มักจะทำทุกอย่างที่ฉันต้องการ
Mattias Nilsson

3

เรากำลังพัฒนาVersile Python (VPy) ซึ่งเป็นการนำไปใช้งานสำหรับ python 2.6+ และ 3.x ของเฟรมเวิร์ก ORB / RPC ใหม่ ฟังก์ชั่นรุ่น AGPL dev เพื่อการตรวจสอบและการทดสอบมีความพร้อมใช้งาน VPy มีความสามารถของ python แบบเนทีฟคล้ายกับ PyRo และ RPyC ผ่านเลเยอร์อ็อบเจ็กต์เนทีฟทั่วไป ( ตัวอย่างโค้ด ) ผลิตภัณฑ์ที่ถูกออกแบบสำหรับการปฏิสัมพันธ์วัตถุระยะไกลแพลตฟอร์มสำหรับการใช้งานของVersile แพลตฟอร์ม

การเปิดเผยข้อมูลทั้งหมด: ฉันทำงานให้กับ บริษัท ที่พัฒนา VPy


2

อาจเป็น ZSI ซึ่งใช้ SOAP ฉันใช้เครื่องกำเนิดต้นขั้วและมันทำงานได้อย่างถูกต้อง ปัญหาเดียวที่ฉันพบคือการทำ SOAP ผ่าน HTTPS


1

คุณพลาดออกomniORB นี่เป็นการใช้งาน CORBA เต็มรูปแบบดังนั้นคุณสามารถใช้เพื่อพูดคุยกับภาษาอื่น ๆ ที่รองรับ CORBA

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.