您好,登錄后才能下訂單哦!
這篇文章主要介紹“python rpyc客戶端怎么調用服務端”,在日常操作中,相信很多人在python rpyc客戶端怎么調用服務端問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”python rpyc客戶端怎么調用服務端”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
使用rpyc遇到兩個問題:
client調用server的exposed_xxxx()方法時傳進去的參數類型,到了server端會改變,
打印出來是<netref class 'rpyc.core.netref.type'>類型,與原來傳進的類型不同
解決方法:
def exposed_clentA_will_use(self, hello): hello = rpyc.classic.obtain(hello)
這樣就把傳進來的hello轉變為本地類型,如果本地沒有這種類型,需要創建這種類型
比如傳進來的是<class 'numpy.ndarray'>類型,但是server本地沒有,則需要import numpy
client調用server的方法時有報錯ValueError: pickling is disabled
解決方法:
rpyc_config = rpyc.core.protocol.DEFAULT_CONFIG rpyc_config['allow_pickle'] = True host_ip = '127.0.0.1' conn = rpyc.connect(host_ip, port = 33333, config = rpyc_config)
由于是不安全的協議,需要手動允許pickle
字面意思也明確了:allow_pickle
6月份,在公司做APP和Web自動化測試開發,碰到一個比較棘手的問題是:APP需要和Web一起操作才能走完整個測試流程。
但是APP和Web使用的是不同的測試工具,Appium和Selenium,測試框架也是獨立的。如何把二者整合起來呢?
沒錯,python rpyc模塊派上用場了,這里使用python rpyc對Web頁面相關的操作做了二次封裝。
from rpyc import Service from rpyc.utils.server import ThreadedServer class MyService(Service): def exposed_bid(xxx): back_page.bid(xxx) s=ThreadedServer(MyService,port=12233,listener_timeout=300,auto_register=False) s.start()
在APP自動化測試腳本里面,這樣調用即可:
c = rpyc.connect('localhost',12233) c.root.bid(xxxx)
但是在APP測試腳本運行過程中,會出現rpyc調用超時的情況,這是因為rpyc默認的調用等待時間只有30s,如果某些rpyc調用的等待時間超過30s就會報錯,解決方法很簡單,在rpyc包的protocol.py文件中找到
SYNC_REQUEST_TIMEOUT,改大即可。
到此,關于“python rpyc客戶端怎么調用服務端”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。