亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python腳本讀取Consul配置信息的方法示例

 更新時(shí)間:2021年11月02日 09:57:00   作者:小博測(cè)試成長(zhǎng)之路  
本文主要介紹了Python腳本讀取Consul配置信息的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

先來(lái)說(shuō)一下背景,為什么要寫(xiě)腳本去讀Consul的配置信息呢?Consul是啥呢?consul是google開(kāi)源的一個(gè)使用go語(yǔ)言開(kāi)發(fā)的服務(wù)發(fā)現(xiàn)、配置管理中心服務(wù)。目前公司用的是這個(gè)東西去管理項(xiàng)目上的一些配置信息。公司的環(huán)境是通過(guò)docker鏡像的方式去部署的,鏡像是通過(guò)rancher去進(jìn)行管理的。這一套東西面臨的一個(gè)問(wèn)題是:服務(wù)每次更新之后,服務(wù)對(duì)應(yīng)的ip地址是動(dòng)態(tài)變化的。每次需要使用swagger去測(cè)接口的時(shí)候,都要去rancher上去重新找新的ip地址,比較麻煩。正好呢,最近部門(mén)在考慮準(zhǔn)備做接口自動(dòng)化測(cè)試,到時(shí)候ip總是變的問(wèn)題也是需要解決的,因此,就先寫(xiě)個(gè)腳本調(diào)接口獲取配置信息,拿到某個(gè)服務(wù)的ip和端口信息。順帶的把swagger地址也打印出來(lái),以后要訪問(wèn)某個(gè)服務(wù)的swagger地址就方便很多了。

python讀取Consul配置信息的話,用到的是python-consul庫(kù),在使用前,需要先安裝一下對(duì)應(yīng)的插件。

pip install python-consul

封裝好的讀取consul配置的類(lèi)如下:

以下腳本中定義的函數(shù),暫時(shí)只做數(shù)據(jù)打印,并未返回具體的數(shù)據(jù),因?yàn)椴煌腸onsul地址,上面的配置信息其實(shí)還需要做處理,比如我這次主需要取出一些部署的服務(wù)的ip和端口信息,但是consul上面還有一些其他的配置信息,是可以過(guò)濾掉的。并且,有的配置項(xiàng)可能由于配置錯(cuò)誤,會(huì)存在重復(fù)的配置,暫時(shí)沒(méi)有刪除,這種的話,后續(xù)可以在腳本中根據(jù)返回的相關(guān)字段,去取有效的配置信息。

import consul
 
 
class RFConsul(object):
 
    def __init__(self, host, port):
        """初始化,連接consul服務(wù)器"""
        self._client = consul.Consul(host, port, scheme='http', verify=False)
 
    def getAllServices(self):
        services = self._client.agent.services()
        for i in services:
            service = services.get(i)
            print({service['Service']: service})
 
    def getServiceByName(self, service_name):
 
        data = self._client.catalog.service(service_name)
        for value in data[1]:
            print(service_name + "服務(wù)的swagger地址: " + "http://" + value['ServiceAddress'] + ":" + str(value['ServicePort']) + "/swagger-ui.html")

getServiceByName:根據(jù)服務(wù)名,調(diào)用后,直接打印拼接好的swagger-ui的訪問(wèn)地址。

getAllServices:打印某個(gè)consul地址下的所有配置信息。

調(diào)用方式:

host = "127.0.0.1"  # consul服務(wù)器的ip
port = "8500"  # consul服務(wù)器對(duì)外的端口
consul_client = RFConsul(host, port)
consul_client.getAllServices()
res = consul_client.getServiceByName("xxx-servicename") # 輸入配置項(xiàng)的名稱(chēng)

調(diào)用后,直接得到類(lèi)似下圖的swagger訪問(wèn)地址是不是很香:

然后,在公司中的話,像這種配置中心的地址一般都需要通過(guò)代理才能訪問(wèn),公司用的是socket5的代理,一般在調(diào)用腳本的時(shí)候要把代理軟件打開(kāi)。也可以在腳本中添加socket代理的配置信息:

 import socket
 import socks
 socks.set_default_proxy(socks.SOCKS5, "ip", port)
 socket.socket = socks.socksocket

到此這篇關(guān)于Python腳本讀取Consul配置信息的方法示例的文章就介紹到這了,更多相關(guān)Python讀取Consul配置信息內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 用Python實(shí)現(xiàn)等級(jí)劃分

    用Python實(shí)現(xiàn)等級(jí)劃分

    大家好,本篇文章主要講的是用Python實(shí)現(xiàn)等級(jí)劃分,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-02-02
  • OpenCV視頻流Python多線程處理方法詳細(xì)分析

    OpenCV視頻流Python多線程處理方法詳細(xì)分析

    為OpenCV是搞計(jì)算機(jī)視覺(jué)必須要掌握的基礎(chǔ),這篇文章主要給大家介紹了關(guān)于OpenCV視頻流多線程處理的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-11-11
  • 解決使用Pycharm導(dǎo)入conda?environment時(shí)找不到python.exe

    解決使用Pycharm導(dǎo)入conda?environment時(shí)找不到python.exe

    今天在使用conda創(chuàng)建環(huán)境之后,使用pycham發(fā)現(xiàn)找到自己的python環(huán)境但是找不到環(huán)境對(duì)應(yīng)的python.exe,這篇文章主要給大家介紹了關(guān)于如何解決使用Pycharm導(dǎo)入conda?environment時(shí)找不到python.exe的相關(guān)資料,需要的朋友可以參考下
    2023-10-10
  • 解決Python3.8運(yùn)行tornado項(xiàng)目報(bào)NotImplementedError錯(cuò)誤

    解決Python3.8運(yùn)行tornado項(xiàng)目報(bào)NotImplementedError錯(cuò)誤

    這篇文章主要介紹了Python3.8運(yùn)行tornado項(xiàng)目報(bào)NotImplementedError錯(cuò)誤,本文給大家分享解決方法,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Python+Turtle繪制可愛(ài)的小蜜蜂詳解

    Python+Turtle繪制可愛(ài)的小蜜蜂詳解

    turtle庫(kù)是一個(gè)點(diǎn)線面的簡(jiǎn)單圖像庫(kù),在Python2.6之后被引入進(jìn)來(lái),能夠完成一些比較簡(jiǎn)單的幾何圖像可視化。本文將利用turtle繪制一個(gè)可愛(ài)的小蜜蜂,感興趣的可以試一試
    2022-05-05
  • OpenCV圖像處理GUI功能詳解

    OpenCV圖像處理GUI功能詳解

    GUI功能是opencv的入門(mén)知識(shí),本文給大家介紹下OpenCV圖像處理GUI功能,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,感興趣的朋友一起看看吧
    2022-03-03
  • Django模型層實(shí)現(xiàn)多表關(guān)系創(chuàng)建和多表操作

    Django模型層實(shí)現(xiàn)多表關(guān)系創(chuàng)建和多表操作

    使用django ORM可以創(chuàng)建多表關(guān)系,并且也支持多張表之間的操作,以創(chuàng)建表關(guān)系和查詢兩部分說(shuō)明django ORM的多表操作,本文就詳細(xì)的介紹一下,感興趣的可以了解一下
    2021-07-07
  • 在django admin中添加自定義視圖的例子

    在django admin中添加自定義視圖的例子

    今天小編就為大家分享一篇在django admin中添加自定義視圖的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-07-07
  • python?nonlocal的用法詳解

    python?nonlocal的用法詳解

    這篇文章主要給大家介紹了關(guān)于python?nonlocal用法的相關(guān)資料,最近在python學(xué)習(xí)中遇到了nonlocal關(guān)鍵字但是感到困惑,于是記錄nonlocal關(guān)鍵字用法,需要的朋友可以參考下
    2023-10-10
  • Python中input和raw_input的一點(diǎn)區(qū)別

    Python中input和raw_input的一點(diǎn)區(qū)別

    這篇文章主要介紹了Python中input和raw_input的一點(diǎn)區(qū)別,它們都是用來(lái)讀取控制臺(tái)輸入的函數(shù),需要的朋友可以參考下
    2014-10-10

最新評(píng)論