簡體   English   中英

我應該使用哪個RPC模塊在Python中實現RCP,並且以后可以更改連接方法?

[英]What RPC module should I use to implement RCP in Python and be able to change connection method later?

我確實必須實現從Python到Python的一些RPC,但是出於安全原因,連接方法非常有限。

目前看來,我也許可以使用SSH進行連接並在遠程系統上運行一個python腳本。

將來,當我們可能必須使用其他東西(例如telnet進行連接時,這種情況可能會改變,因此我希望使用不同協議的解決方案可以使用。

另一個潛在的限制是關於Python版本,即使客戶端和服務器運行的版本不同,它也必須使用Python 2.5-2.7。

我應該使用什么,請僅在您有成功經驗的情況下提出建議,否則我也可以谷歌搜索;)

我想說的是,在您的情況下,通信兩個不同的python進程的最簡單方法是使用pyro3 我最近在一個小型項目中使用了pyro4 ,這使我專注於要發送/接收的信息,而不是正確地對其進行編碼/解碼的方式非常有效。

我建議您使用v3,因為根據源代碼中的tox.ini文件,v4尚未針對python 2.5進行過測試,因此那里可能存在一些問題。

關於網絡,該庫負責套接字本身,因此沒有對telnet或ssh的任何明確支持(盡管在TODO列表中使用paramiko)。 狠惡,你可能需要依靠SSH隧道,這是在這個例子

Spyne支持可插拔協議和傳輸,但尚不支持SSH(或任何其他類似套接字的傳輸)。 這是一個穩定但相當新的項目-尤其是客戶邏輯需要認真的工作。

關於您最初的問題,在我熟悉的序列化程序中(這是您在spyne網站上看到的大多數),最適合通過流傳輸進行管道傳輸的是MessagePack,因為它支持類似文件迭代器的功能-object(又名流式反序列化)接口。

作為python 2.6+的部分解決方案,您可以看看Versile Python (當前正在開發中),我們剛剛添加了對通過管道進行反應堆驅動的字節通信的支持(需要一個允許在管道文件描述符上進行select.select的平台,即視窗)。 這樣可以通過管道或stdin / stdout鏈接到VPy ORB。 有關如何與ssh一起使用的示例,請參見此食譜

Versile Python需要python 2.6+或3.x,因此不幸的是不適用於2.5。

您是否想在Rabbitmq中使用某些東西來發送接收命令和日志?

https://github.com/nvalerkos/cronio

是python 2.7需要rabbitmq

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM