我不确定我的标题是否具有误导性,但我是一个蟒蛇菜鸟。我正在为Vault做界面。它所做的只是每30秒续订一次密钥,因此客户不必这样做。否则,秘密将过期或更改,使用密钥的客户端将收到错误。我使用python threading
来更新密钥。这是我的代码。
from __future__ import print_function
import hvac
import time
import threading
import os
VAULT_URL = os.environ['VAULT_ADDR']
VAULT_TOKEN = os.environ['VAULT_TOKEN']
class Client:
def __init__(self, *keys):
self.keys = keys
self.data_dict = {}
self.client = hvac.Client(
url=VAULT_URL,
token=VAULT_TOKEN)
self.__renew()
def read(self):
for key in self.keys:
self.data_dict[key] = self.client.read(key)
return self.data_dict
def __renew(self):
self.client.renew_token()
threading.Timer(30, self.__renew).start()
self.read()
这就是它的使用方式。
from cnvault.cnvault import Client
data_dict = Client('secret/key').read()
// This is for web.py just to test
class ping:
def GET(self):
print(data_dict)
return 'pong'
现在,如果我使用Vault CLI更改Vault中的数据并拨打/ping
,我仍然会看到旧数据。