rpyc (Remote Python Call)爲分佈式計算環境提供了優良的基礎平臺。 使用rpyc編寫c/s結構程序,徹底不用考慮老式的socket編程,如今只用編寫簡單的三、5行代碼便可完成之前的數千行代碼的功能。編程
Remote Python Call (RPyC) 是一個 Python 的庫用來實現 RPC 和分佈式計算的工具。支持同步和異步操做、回調和遠程服務以及透明的對象代理。服務器
1.寫服務器端的方法以下:
#-*- encoding: gb2312 -*-
import time
from rpyc import Service
from rpyc.utils.server import ThreadedServer
class TimeService(Service):
def exposed_get_time(self):
return time.ctime() #time模塊中的一個內置方法
s=ThreadedServer(TimeService,port=12233,auto_register=False)
s.start()
RPYC 這個包是我導入的一個外部包的哦!不過經過help同樣能夠查看到這個包的內在的一些東西哈哈!
2.服務器開啓如今來讓客戶端進行訪問了!
import rpyc
c=rpyc.connect('localhost',12233)
c.root.get_time()
c.close()
現 在來想一個事情。以前在RO通信模塊中就是咱們在服務器端寫了一個方法而後咱們就可在客戶端直接調用了哦!
好比咱們在服務器端寫了一個計算sum 函數 而後咱們就能夠在客戶端進行調用這個函數了哦!
那咱們來看一下這裏的機制吧!
RPYC重點:
1.Client必定要 close()鏈接哦!
2.Server中exposed_打頭的函數才能被 客戶端調用。
因此若是寫服務端代碼的時候想要讓客戶端調用 就要加這一個前綴哦
c=rpyc.connect('localhost',12233) #首先要鏈接服務器
3.client要訪問服 務器端代碼經過c.root才能訪問哦!
c.root.get_time() 調用服務器端方法了!
4.RPYC沒有認證機制,任何客 戶端均可以直接訪問服務器端的暴露的方法了!
OK,聯繫當前在RO中寫過的一個方法哦!
import time
from rpyc import Service
from rpyc.utils.server import ThreadedServer
class TimeService(Service):
def exposed_sum(self,a,b):
return a+b
s=ThreadedServer(TimeService,port=12233,auto_register=False)
s.start()
我 先在服務器端寫了一個方法求和操做!
讓客戶端進行直接調用 吧!
import rpyc
c=rpyc.connect('localhost',12233)
print c.root.sum(1,2)
c.close()
本質與RO原理是同樣的哦!
之後咱們只須要在服務器端定義好一些寫好的方法 而後在客戶端直接調用就能夠了!
v=c.root.function()
返回了一個值。若是是字符串,數字,在c.close以後仍然能 夠調用的
若是爲其餘類型則不能訪問了!異步