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

使用Python的Bottle框架寫(xiě)一個(gè)簡(jiǎn)單的服務(wù)接口的示例

 更新時(shí)間:2015年08月25日 12:01:39   作者:metaboy  
這篇文章主要介紹了使用Python的Bottle框架寫(xiě)一個(gè)簡(jiǎn)單的服務(wù)接口的示例,基于Linux系統(tǒng)環(huán)境,需要的朋友可以參考下

是不是有這么一個(gè)場(chǎng)景,對(duì)外提供一堆數(shù)據(jù)或者是要返回給用戶一個(gè)結(jié)果。但是不想把內(nèi)部的一些數(shù)據(jù)和邏輯暴露給對(duì)方。。。簡(jiǎn)單點(diǎn)來(lái)說(shuō),就是想以服務(wù)的方式對(duì)外提供一個(gè)接口。對(duì)于這種有很多處理方式,RPC,搭建一個(gè)web服務(wù)啥的。。。。但是這些畢竟都太重量級(jí)了,操作起來(lái)很麻煩。我這里給出的一種非常easy的方式來(lái)處理。使用bottle解決問(wèn)題。

需求: 檢查一個(gè)zookeeper服務(wù)中的某些節(jié)點(diǎn)是否存在,如果存在返回OK,不存在則給出不存的節(jié)點(diǎn)信息。要求返回的信息是和pyunit的結(jié)果信息一致。

實(shí)現(xiàn)環(huán)境:

    1.  python 2.7  以及自帶的pyunit
    2.  bottle          作為一個(gè)python的簡(jiǎn)易服務(wù)器     

pip  install    bottle

    3.  kazoo         一個(gè)python的zookeeper客戶端  

pip install kazoo

1. 創(chuàng)建一個(gè)python的測(cè)試類 zk_check.py

 -*- coding: utf-8 -*-                                                                             
                                         
  from kazoo.client import KazooClient                     
  import unittest                               
  class zktest(unittest.TestCase):                       
    def runTest(self):                            
      zknamespace = “/app/zktest_performance_1”               
      zkhosts = “127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183”  
      ZKTEST_DRIVERS = [“ip1”, “ip2”]      
      ZKTEST_NODES = [“ip3”, “ip4”, “ip5”, “ip6”]
                                         
      driverChildren = []                         
      nodeChildren = []                          
      badDrivers = []                           
      badNodes = []                            
      # checking                              
      zk = KazooClient(hosts=zkhosts, read_only=True)           
      zk.start()                              
      driverFatherPath = zknamespace + “/status/drivers”          
      nodeFatherPath = zknamespace + “/status/nodes”                                      
                          
      if zk.exists(driverFatherPath):                   
        driverChildren = zk.get_children(driverFatherPath)        
        if len(driverChildren) >                                                 
   
          for driver in zktest_DRIVERS:                 
            if driver not in driverChildren:             
              badDrivers.append(driver)                                   
                                         
      if zk.exists(nodeFatherPath):                    
        nodeChildren = zk.get_children(nodeFatherPath)          
        if len(nodeChildren) >                                                 
   
          for node in zktest_NODES:                   
            if node not in nodeChildren:               
              badNodes.append(node)                                                                        
      zk.stop()
      if (len(badNodes)==0) and (len(badDrivers)==0):           
        self.assertEquals(1,1,”pass”)                  
      else:                                
        if len(badDrivers) > 0:                     
          self.assertEquals(1,2,'len : %d , error : %s' % (len(badDrivers),badDrivers))
        if len(badNodes) > 0:                      
          self.assertEquals(1,2,'len : %d , error : %s' % (len(badNodes),badNodes))                                       
  if __name__ == ‘__main__':                          
    unittest.main()

2. 寫(xiě)一個(gè)bottle服務(wù),將結(jié)果輸出

  import commands                                                                                  
  from bottle import route, run, template                    
  @route(‘/alisa')                               
   def index():                                 
     command = “python /Users/metaboy/script/zk_check.py”         
   
     #output = os.popen(command)                        
     return template(‘<b>{{text}}</b>', text=commands.getoutput(command))                         
                                          
  run(host='localhost', port=8888) 

3. 后臺(tái)啟動(dòng)bottle服務(wù),提供外部訪問(wèn)ip

現(xiàn)在可以直接通過(guò)  http://localhost:8888/alisa   進(jìn)行訪問(wèn)。

相關(guān)文章

  • Python全棧之學(xué)習(xí)JQuery

    Python全棧之學(xué)習(xí)JQuery

    這篇文章主要為大家介紹了Python全棧之JQuery,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-01-01
  • Python魔術(shù)方法深入分析講解

    Python魔術(shù)方法深入分析講解

    所謂魔法函數(shù)(Magic Methods),是Python的?種?級(jí)語(yǔ)法,允許你在類中?定義函數(shù)(函數(shù)名格式?般為_(kāi)_xx__),并綁定到類的特殊?法中。?如在類A中?定義__str__()函數(shù),則在調(diào)?str(A())時(shí),會(huì)?動(dòng)調(diào)?__str__()函數(shù),并返回相應(yīng)的結(jié)果
    2023-02-02
  • python多線程semaphore實(shí)現(xiàn)線程數(shù)控制的示例

    python多線程semaphore實(shí)現(xiàn)線程數(shù)控制的示例

    這篇文章主要介紹了python多線程semaphore實(shí)現(xiàn)線程數(shù)控制的示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • pandas實(shí)現(xiàn)to_sql將DataFrame保存到數(shù)據(jù)庫(kù)中

    pandas實(shí)現(xiàn)to_sql將DataFrame保存到數(shù)據(jù)庫(kù)中

    這篇文章主要介紹了pandas實(shí)現(xiàn)to_sql將DataFrame保存到數(shù)據(jù)庫(kù)中,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • Python中的Classes和Metaclasses詳解

    Python中的Classes和Metaclasses詳解

    這篇文章主要介紹了Python中的Classes和Metaclasses詳解,屬于基礎(chǔ)知識(shí)中類與對(duì)象的概念部分的深入,需要的朋友可以參考下
    2015-04-04
  • 解決python3 網(wǎng)絡(luò)請(qǐng)求路徑包含中文的問(wèn)題

    解決python3 網(wǎng)絡(luò)請(qǐng)求路徑包含中文的問(wèn)題

    今天小編就為大家分享一篇解決python3 網(wǎng)絡(luò)請(qǐng)求路徑包含中文的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • PyTorch中model.zero_grad()和optimizer.zero_grad()用法

    PyTorch中model.zero_grad()和optimizer.zero_grad()用法

    這篇文章主要介紹了PyTorch中model.zero_grad()和optimizer.zero_grad()用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-06-06
  • python?字符串常用方法超詳細(xì)梳理總結(jié)

    python?字符串常用方法超詳細(xì)梳理總結(jié)

    字符串是Python中基本的數(shù)據(jù)類型,幾乎在每個(gè)Python程序中都會(huì)使用到它。本文為大家總結(jié)了Python中必備的31個(gè)字符串方法,需要的可以參考一下
    2022-03-03
  • 關(guān)于fastapi異步框架操作的理解

    關(guān)于fastapi異步框架操作的理解

    這篇文章主要介紹了關(guān)于fastapi異步框架的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Python中的各個(gè)多線程模塊之間的區(qū)別解析

    Python中的各個(gè)多線程模塊之間的區(qū)別解析

    Python中涉及多線程的主要模塊包括threading、thread和concurrent.futures,現(xiàn)代Python編程推薦使用threading和concurrent.futures,以提供更高層次的抽象和可用性,感興趣的朋友跟隨小編一起看看吧
    2024-09-09

最新評(píng)論

郓城县| 苍溪县| 五常市| 凉山| 永嘉县| 章丘市| 威信县| 且末县| 高青县| 高清| 曲周县| 临洮县| 南召县| 龙江县| 安义县| 景东| 来安县| 湖北省| 舞阳县| 洪洞县| 奇台县| 江都市| 杂多县| 库尔勒市| 东乌珠穆沁旗| 黄陵县| 晋城| 米易县| 城步| 鄱阳县| 虎林市| 循化| 中江县| 兴义市| 呼玛县| 浦江县| 垣曲县| 隆化县| 台江县| 方正县| 田阳县|