新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 如何在Dragonbaord 410c上實現高性能并發處理TCP服務器

        如何在Dragonbaord 410c上實現高性能并發處理TCP服務器

        作者: 時間:2017-10-11 來源:網絡 收藏

        在IOT設計中,通常我們需要構建一個或者多個監測和控制網絡,來實現對各種傳感器及設備的數據采集和控制,這樣我們就需要在網絡中實現集中管理終端,以對區域的傳感器和設備進行集中管理,在云端和底層控制節點之間維護一個智能化的管理終端,dragonboard 410c憑借其強大的處理性能和網絡連接能力,可以方便的實現這一管理終端功能,此時我們就需要在dragonbaord 410c上設計一個多任務的接入服務,讓傳感器和相關的控制設備接入,為此,本期blog將向大家介紹如何使用gevent高性能的并發處理庫在draognbaord 410c上來實現一個高性能的TCP服務器。

        本文引用地址:http://www.104case.com/article/201710/365545.htm

        gevent是基于協程的Python網絡庫。特點: 基于libev的快速事件循環(Linux上epoll,FreeBSD上kqueue)。 基于greenlet的輕量級執行單元。 API的概念和Python標準庫一致(如事件,隊列)。 可以配合socket,ssl模塊使用。 能夠使用標準庫和第三方模塊創建標準的阻塞套接字(gevent.monkey)。

        使用gevent來提高我們的并發處理性能,首先需要在draongboard 410c上安裝gevent模塊,具體安裝方法如下:

        sudo apt-get install libevent-dev

        sudo apt-get install python-all-dev

        sudo apt-get install python-setuptools

        sudo easy_install greenlet

        sudo easy_install gevent

        完成安裝后,from gevent.server import StreamServer 就可以導入使用gevent來實現高效的并發處理,這里我們以構建一個簡答的業務邏輯處理服務為例,具體代碼如下:

        from gevent.server import StreamServer

        import addressbook_pb2

        from testBusinessLogic import testBusinessLogic

        BUFSIZE=1024

        reportLenMin=10

        def handle(socket,address):

        while(1):

        try:

        report=socket.recv(BUFSIZE)

        print(report)

        if len(report)>reportLenMin:

        testLogic=testBusinessLogic(report,“192.168.1.156”)

        testLogic.startMainLogicProcess(socket)

        else:

        print(“recv report error”)

        socket.send(“your report is error”)

        except:

        print(“service error”)

        socket.send(“service error”)

        if __name__==“__main__”:

        testServer = StreamServer((‘192.168.41.156’,5000),handle)

        testServer.serve_forever()

        到這里我們就完成了整個測試服務器的搭建,該服務器能夠借助于gevent實現高并發的處理,并且支持異常處理,可以在dragonbaord 410c上穩定運行,這里testBusinessLogic為測試邏輯處理類,大家需要實現的業務邏輯可以放到里面實現,具體不詳細介紹。



        關鍵詞: DragonBoard410c

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 比如县| 江源县| 合作市| 大宁县| 陈巴尔虎旗| 福安市| 资源县| 漠河县| 亳州市| 驻马店市| 宁夏| 嘉禾县| 龙川县| 黑水县| 揭阳市| 德令哈市| 都安| 宜君县| 昂仁县| 临邑县| 灵丘县| 阿合奇县| 潮州市| 潜山县| 海原县| 新郑市| 开鲁县| 罗田县| 正镶白旗| 察雅县| 高唐县| 宁陕县| 秦皇岛市| 汕头市| 九龙县| 抚宁县| 介休市| 兴国县| 龙海市| 通许县| 苍南县|