亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

oslo RPC Client消息接口簡介

發布時間:2020-07-03 13:08:07 來源:網絡 閱讀:1138 作者:xrb_jurgen 欄目:開發技術

class oslo_messaging.RPCClient(transporttargettimeout=Noneversion_cap=Noneserializer=Noneretry=None)


RPCClient是用于在遠程RPC服務器上調用方法的類。


transport:RPCClient通過transport向RPC server發送遠程調用并接收響應。

支持兩種模式:

RPC calls:適用于期望有調用響應的場景,遠程調用方法并等待響應

RPC casts:適用于不需要RPC server返回響應的場景


client:用于控制如何將RPC request傳遞到服務器。如果只有topic(exchange可選)被設置,RPC能夠被任何監聽該topic(以及exchange)的servers服務,多個servers按照round-robin的方式輪流被選中。在RPC Cast場景下,通過設置target的"fanout"屬性為True,可以把request廣播到所有監聽的servers。


在構造過程中創建默認target后,target屬性能夠在單獨的方法調用中使用prepare方法進行重配置。


方法調用由請求上下文字典,方法名稱和參數字典組成。

使用類封裝RPC Client的例子:

class TestClient(object):

    def __init__(self, transport):
        target = messaging.Target(topic='test', version='2.0')
        self._client = messaging.RPCClient(transport, target)

    def test(self, ctxt, arg):
        return self._client.call(ctxt, 'test', arg=arg)

使用prepare方式重新設置target屬性的例子:

def test(self, ctxt, arg):
    cctxt = self._client.prepare(version='2.5')
    return cctxt.call(ctxt, 'test', arg=arg)

另一個例子,設置超時時間:

def test(self, ctxt, arg):
    cctxt = self._client.prepare(timeout=10)
    return cctxt.call(ctxt, 'test', arg=arg)


如果連接無法完成,client會嘗試重新建立連接,默認將無限期繼續直到連接完成,可以設置retry次數:

client = messaging.RPCClient(transport, target, retry=None)
client.call(ctxt, 'sync')
try:
    client.prepare(retry=0).cast(ctxt, 'ping')
except messaging.MessageDeliveryFailure:
    LOG.error("Failed to send ping message")


call(ctxtmethod**kwargs)

call方法,觸發調用并等待響應。

只允許返回單個響應值,不支持調用一個fanout模式的target。

在單一線程內能夠保證多個call方法按順序處理。

方法參數必須是原始類型或者客戶端序列化器支持的類型(如果有)。 類似地,請求上下文必須是字典類型,除非客戶端的序列化程序支持序列化另一個類型。


can_send_version(version=<object object>)

檢查版本是否與版本上限兼容。


cast(ctxtmethod**kwargs)

觸發方法并且不會為返回值阻塞。

cast() RPC請求可以廣播到所有相匹配的servers。

cast會阻塞直到RPC request方法被messaging transport接受,但不確認方法是否被server調用。

cast保證方法不會在一個目的地被執行兩次。

cast不保證執行順序。

類似的,請求上下文必須是字典類型,除非客戶端的序列化程序支持序列化另一個類型。


prepare(exchange=<object object>, topic=<object object>, namespace=<object object>, version=<object object>, server=<object object>, fanout=<object object>, timeout=<object object>, version_cap=<object object>, retry=<object object>)

準備方法調用上下文。

使用此方法覆蓋單個方法調用的客戶端屬性。 例如:

def test(self, ctxt, arg):
    cctxt = self.prepare(version='2.5')
    return cctxt.call(ctxt, 'test', arg=arg)


exception oslo_messaging.RemoteError(exc_type=Nonevalue=Nonetraceback=None)

表示遠程端點方法引發了異常。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阿勒泰市| 宜兰市| 东乌珠穆沁旗| 重庆市| 武宣县| 济宁市| 鄂托克前旗| 大宁县| 兴仁县| 田阳县| 加查县| 长汀县| 全州县| 论坛| 垣曲县| 黄山市| 英德市| 昭苏县| 佛学| 大荔县| 阿坝县| 安岳县| 泗水县| 庆安县| 青龙| 平塘县| 南安市| 东辽县| 墨玉县| 建始县| 丹东市| 巫山县| 鞍山市| 峨眉山市| 铅山县| 玛纳斯县| 吴堡县| 英吉沙县| 景德镇市| 都兰县| 孟连|