中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python腳本如何讀取Consul配置信息

發布時間:2021-11-02 11:43:01 來源:億速云 閱讀:282 作者:小新 欄目:開發技術

這篇文章給大家分享的是有關Python腳本如何讀取Consul配置信息的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

先來說一下背景,為什么要寫腳本去讀Consul的配置信息呢?Consul是啥呢?consul是google開源的一個使用go語言開發的服務發現、配置管理中心服務。目前公司用的是這個東西去管理項目上的一些配置信息。公司的環境是通過docker鏡像的方式去部署的,鏡像是通過rancher去進行管理的。這一套東西面臨的一個問題是:服務每次更新之后,服務對應的ip地址是動態變化的。每次需要使用swagger去測接口的時候,都要去rancher上去重新找新的ip地址,比較麻煩。正好呢,最近部門在考慮準備做接口自動化測試,到時候ip總是變的問題也是需要解決的,因此,就先寫個腳本調接口獲取配置信息,拿到某個服務的ip和端口信息。順帶的把swagger地址也打印出來,以后要訪問某個服務的swagger地址就方便很多了。

python讀取Consul配置信息的話,用到的是python-consul庫,在使用前,需要先安裝一下對應的插件。

pip install python-consul

封裝好的讀取consul配置的類如下:

以下腳本中定義的函數,暫時只做數據打印,并未返回具體的數據,因為不同的consul地址,上面的配置信息其實還需要做處理,比如我這次主需要取出一些部署的服務的ip和端口信息,但是consul上面還有一些其他的配置信息,是可以過濾掉的。并且,有的配置項可能由于配置錯誤,會存在重復的配置,暫時沒有刪除,這種的話,后續可以在腳本中根據返回的相關字段,去取有效的配置信息。

import consul
 
 
class RFConsul(object):
 
    def __init__(self, host, port):
        """初始化,連接consul服務器"""
        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 + "服務的swagger地址: " + "http://" + value['ServiceAddress'] + ":" + str(value['ServicePort']) + "/swagger-ui.html")

getServiceByName:根據服務名,調用后,直接打印拼接好的swagger-ui的訪問地址。

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

調用方式:

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

調用后,直接得到類似下圖的swagger訪問地址是不是很香:

Python腳本如何讀取Consul配置信息Python腳本如何讀取Consul配置信息

然后,在公司中的話,像這種配置中心的地址一般都需要通過代理才能訪問,公司用的是socket5的代理,一般在調用腳本的時候要把代理軟件打開。也可以在腳本中添加socket代理的配置信息:

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

感謝各位的閱讀!關于“Python腳本如何讀取Consul配置信息”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

奉化市| 合水县| 浙江省| 稷山县| 博野县| 广安市| 海盐县| 巴彦淖尔市| 洛川县| 闽侯县| 贵港市| 宁海县| 商河县| 大方县| 南宫市| 阿拉善左旗| 余干县| 东莞市| 通许县| 开封县| 宝兴县| 台山市| 昌乐县| 临颍县| 河北区| 比如县| 集贤县| 新源县| 东方市| 忻州市| 郓城县| 平陆县| 上饶市| 天津市| 长汀县| 弥渡县| 辽阳县| 黄梅县| 砚山县| 外汇| 松原市|