OpenStack RPC Client


rpc call

調(diào)用方法并等待返回。

call()方法是用來調(diào)用有返回值的RPC方法。由于只允許有一個返回值,所以不允許對fanout類型的target調(diào)用call方法。

call方法會阻塞調(diào)用線程,直到消息隊列提供了返回值,超時,或不可恢復(fù)的錯誤。

call保證RPC請求最多執(zhí)行一次,保證了不會有重復(fù)調(diào)用。但是如果在返回值到達之前調(diào)用失敗或超時,則無法保證是否調(diào)用了該方法。

由于call()會阻塞到RPC方法完成,因此可保證來自同一線程的多個RPC調(diào)用按順序處理。

方法參數(shù)必須是原始類型或客戶端序列化程序支持的類型(如果有)。 同樣,request context必須是dict,除非客戶端的序列化程序支持序列化另一種類型。

如何處理遠端RPC方法引發(fā)的任何錯誤的語義是非常微妙的。首先,如果遠端異常包含在allow_remote_exmods messaging.get_rpc_transport()參數(shù)中列出的其中一個模塊中,那么將通過call()重新引發(fā)此異常。 但是,此類本地重新引發(fā)的遠程異??膳c本地引發(fā)的相同異常類型區(qū)分開,因為重新引發(fā)的遠程異常被修改,以使其類名以“_Remote”后綴結(jié)尾,因此可以執(zhí)行以下操作:

if ex.__class__.__name__.endswith('_Remote'):
    # Some special case for locally re-raised remote exceptions

其次,如果遠程異常不是來自allowed_remote_exmods列表中列出的模塊,則會引發(fā)messaging.RemoteError異常,其中包含遠程異常的所有詳細信息。

Parameters: 
ctxt (dict) – a request context dict
method (str) – the method name
kwargs (dict) – a dict of method arguments
Raises: 
MessagingTimeout, RemoteError, MessageDeliveryFailure

rpc cast

調(diào)用方法,不會因等待返回值而阻塞當(dāng)前邏輯。
cast()方法用于調(diào)用沒有返回值的RPC方法。通過將fanout target屬性設(shè)置為True,可以向所有偵聽給定topic的服務(wù)器廣播RPC請求。

盡管cast()操作是盡力而為:cast()將阻塞調(diào)用線程,直到消息隊列接受RPC的調(diào)用方法,但cast()不驗證對端服務(wù)器是否已調(diào)用RPC方法。 cast()確保該方法不會在目標上執(zhí)行兩次(例如,“最多一次”執(zhí)行)。
連續(xù)的cast請求沒有順序保證,即使cast是同一目的地。因此,方法會以與它們被觸發(fā)的順序不同的順序執(zhí)行。
cast請求
方法參數(shù)必須是原始類型或客戶端序列化程序支持的類型(如果有)。 同樣,request context必須是dict,除非客戶端的序列化程序支持序列化另一種類型。

Parameters: 
ctxt (dict) – a request context dict
method (str) – the method name
kwargs (dict) – a dict of method arguments
Raises: 
MessageDeliveryFailure if the messaging transport fails to accept the request.

prepare

準備方法調(diào)用context
使用此方法重寫客戶端屬性

參考鏈接

https://docs.openstack.org/oslo.messaging/latest/reference/rpcclient.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容