最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

FFrpc python客戶端lib使用解析

 更新時間:2019年08月24日 10:35:42   作者:知然  
這篇文章主要介紹了FFrpc python客戶端lib使用解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

摘要:

Ffrpc可以很方便的構(gòu)建c++ server, 在網(wǎng)游服務(wù)器程序開發(fā)中,進程間通訊非常的重要,比如gateserver和gameserver或dbserver之間的通信。而ffrpc可以使得進程間通信非常簡單,是由于ffrpc的broker模式封裝了位置無關(guān)性,使得如gate調(diào)用gameserver的接口只需要知道對方的服務(wù)名,從而使得程序中各個節(jié)點的關(guān)系與系統(tǒng)的拓?fù)潢P(guān)系是完美吻合的。這也使得系統(tǒng)的架構(gòu)更加清晰,系統(tǒng)的實現(xiàn)更健壯和易維護。

之前ffrpc只提供了c++ server/client的實現(xiàn),在網(wǎng)游服務(wù)器程序開發(fā)中經(jīng)常有些需求是需要其他語言和C++server通信的,比如一些工具程序,一些web配置、管理后臺登通常用腳本語言實現(xiàn)更加敏捷。比如開發(fā)一個gm后臺,就可以使用python開發(fā)一個web頁面實現(xiàn),而gm后臺指令需要發(fā)給c++ server去執(zhí)行。所以,腳本語言對于C++ server的的接口調(diào)用的需求是確實存在的。所以ffrpc中提供python的客戶端禮庫ffrpc-py。

特性

  • C++ server 通常是使用二進制協(xié)議傳輸數(shù)據(jù)的,但是如果手動用python組二進制包則非常的困難,好在有g(shù)oogle protobuf和thrift兩大神器,而google protobuf在服務(wù)器程序開發(fā)領(lǐng)域已經(jīng)被廣泛接受。所以由于C++ server定義接口時使用了protobuf(或者像我一樣偏愛thrift),那么與腳本通訊就變得小輕松了。
  • 對于C++ server 來講,通信時異步的,這是由于C++ server一般是邏輯層單線程,為了保持高并發(fā)能力,io操作異步化是必然選擇。但是對于腳本如python這種,一般而言還是使用同步調(diào)用模型,而剛好ffrpc的通信模式要求所有的接口都是req<->ret一一對應(yīng)的,ffrpc-py調(diào)用c++ server的接口,只需要制定輸入消息,然后調(diào)用接口,接收返回消息,像調(diào)用本地函數(shù)一樣直接,這也是rpc lib的存在意義。
  • Ffrpc-py 支持protobuf和thrift,當(dāng)然必須和c++ server采用的通信協(xié)議一致。

示例

本例采用c++ sever thrift作為示例。由于ffrpc example目錄的tutorial已經(jīng)實現(xiàn)了一個c++ echo server,本例就利用ffrpc-py調(diào)用echo接口。

其中thrift的定義文件為:

struct echo_thrift_in_t {   
 1: string data
}

struct echo_thrift_out_t {   
 1: string data
}

使用ffrpc-py調(diào)用echo接口:

HOST = '127.0.0.1'
  PORT = 10246
  ffc = ffclient_t(HOST, PORT, 1.5) # 1.5 sec為調(diào)用超時時間
  req = ttypes.echo_thrift_in_t('ohNice')
  ret = ttypes.echo_thrift_out_t()
  ffc.call('echo', req, ret, 'ff')
  print('error_info = %s' %(ffc.error_msg()), ret)

ffrpc接口的參數(shù)的解釋:

  • ffclient_t(HOST, PORT, 1.5) 構(gòu)造函數(shù)的參數(shù)為broker的監(jiān)聽地址和端口。Ffrpc-py只需要知道broker的位置,至于調(diào)用的是哪個服務(wù)器的接口,這個由broker確定,至于目標(biāo)服務(wù)器是跟broker在同一個進程,還是通過網(wǎng)絡(luò)連接,ffrpc-py無需知道細(xì)節(jié)。
  • call 接口調(diào)用遠(yuǎn)程的服務(wù)器接口,參數(shù)一為c++server接口注冊的服務(wù)名,ffrpc-py只需要知道服務(wù)名就可以定位目標(biāo)服務(wù)器的位置
  • call第二個參數(shù)為請求參數(shù)
  • call第三個參數(shù)為c++ server返回的消息類型,如果call返回true,那么該消息會被自動賦上值
  • 第四個參數(shù)為消息的命名空間,比如定義thrift的文件的時候定義了命名空間,那么需要第四個參數(shù)填入命名空間,這里跟C++ server的注冊的消息一致即可,如果C++ server也沒有消息的命名空間,那么省略這個參數(shù)即可
  • Call接口成功返回True,失敗為false,同時error_msg接口可以輸出錯誤原因

總結(jié)

Ffrpc提供了python lib,可以實現(xiàn)py與c++ server的通信,這樣利用python編寫工具、后臺都更加方便了。

同時ffrpc將會對于php進行支持,相應(yīng)的client lib 不久就會開放出來。

Github:  https://github.com/fanchy/FFRPC

c++ server 的實現(xiàn)介紹參見:http://www.fzitv.net/article/168369.htm

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python基于鏈接表實現(xiàn)無向圖最短路徑搜索

    Python基于鏈接表實現(xiàn)無向圖最短路徑搜索

    鏈接表的存儲相比較鄰接炬陣,使用起來更方便,對于空間的使用是剛好夠用原則,不會產(chǎn)生太多空間浪費。所以本文將以鏈接表方式實現(xiàn)無向圖最短路徑搜索,需要的可以參考一下
    2022-04-04
  • Python中ModuleNotFoundError: No module named ‘timm’的錯誤解決

    Python中ModuleNotFoundError: No module named&n

    本文主要介紹了Python中ModuleNotFoundError: No module named ‘timm’的錯誤解決,錯誤意味著你的Python環(huán)境中沒有安裝名為“timm”的模塊,下面就介紹一下幾種解決方法,感興趣的可以了解一下
    2025-03-03
  • Python實現(xiàn)爬蟲抓取與讀寫、追加到excel文件操作示例

    Python實現(xiàn)爬蟲抓取與讀寫、追加到excel文件操作示例

    這篇文章主要介紹了Python實現(xiàn)爬蟲抓取與讀寫、追加到excel文件操作,結(jié)合具體實例形式分析了Python針對糗事百科的抓取與Excel文件讀寫相關(guān)操作技巧,需要的朋友可以參考下
    2018-06-06
  • python中的print()輸出

    python中的print()輸出

    print() 方法用于打印輸出,最常見的一個函數(shù)。這篇文章主要介紹了python的print()輸出 ,需要的朋友可以參考下
    2019-04-04
  • Python使用Tkinter?GUI實現(xiàn)輸入驗證功能

    Python使用Tkinter?GUI實現(xiàn)輸入驗證功能

    這篇文章主要介紹了Python中使用Tkinter?GUI實現(xiàn)輸入驗證,文中通過一個完整示例代碼給大家介紹Python?Tkinter?GUI輸入驗證功能,需要的朋友可以參考下
    2022-04-04
  • UI自動化定位常用實現(xiàn)方法代碼示例

    UI自動化定位常用實現(xiàn)方法代碼示例

    這篇文章主要介紹了UI自動化定位常用實現(xiàn)方法代碼示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-10-10
  • 利用Python實現(xiàn)劉謙春晚魔術(shù)

    利用Python實現(xiàn)劉謙春晚魔術(shù)

    劉謙在2024年春晚上的撕牌魔術(shù)的數(shù)學(xué)原理非常簡單,可以用Python完美復(fù)現(xiàn),文中通過代碼示例給大家介紹的非常詳細(xì),感興趣的同學(xué)可以自己動手嘗試一下
    2024-02-02
  • python-Web-flask-視圖內(nèi)容和模板知識點西寧街

    python-Web-flask-視圖內(nèi)容和模板知識點西寧街

    在本篇文章里小編給大家分享了關(guān)于python-Web-flask-視圖內(nèi)容和模板的相關(guān)知識點內(nèi)容,有需要的朋友們參考學(xué)習(xí)下。
    2019-08-08
  • python數(shù)據(jù)結(jié)構(gòu)之遞歸方法講解

    python數(shù)據(jù)結(jié)構(gòu)之遞歸方法講解

    這篇文章主要介紹了python數(shù)據(jù)結(jié)構(gòu)之遞歸講解,遞歸是解決問題的一種方法,它將問題不斷地分成更小的子問題,直到子問題可以用普通的方法解決。通常情況下,遞歸會使用一個不停調(diào)用自己的函數(shù),下面來看看文章對此的詳細(xì)介紹吧
    2021-12-12
  • python+selenium對table表和分頁處理

    python+selenium對table表和分頁處理

    這篇文章主要介紹了python+selenium對table表和分頁處理,文章內(nèi)容只要包括bulabula2022、table表分頁處理、網(wǎng)頁table所有內(nèi)容循環(huán)處理等相關(guān)內(nèi)容,需要的小伙伴可以參考一下
    2022-01-01

最新評論

若尔盖县| 湛江市| 民丰县| 高雄县| 宁化县| 城口县| 山东省| 马鞍山市| 包头市| 石河子市| 安化县| 临漳县| 光泽县| 民丰县| 萍乡市| 峨眉山市| 上饶市| 玛沁县| 台南市| 沙湾县| 新疆| 拜泉县| 西平县| 那坡县| 三穗县| 横山县| 海淀区| 宝坻区| 鲜城| 大竹县| 晋州市| 苍溪县| 宁波市| 遵化市| 通江县| 凤庆县| 宁津县| 吐鲁番市| 汉沽区| 通山县| 唐山市|