• 1000 предыдущие методы тестирования, например:
def test_grouped_codes():
app = create_app()
instrument(app)
# test stuff
Но я не могу «сбросить» реестр, поэтому все время получаю сообщение об ошибке «Дублированные таймсерии в CollectorRegistry».
Как я могу сбросить реестр (или установить его на пустой реестр) клиентской библиотеки Prometheus Python во время выполнения?
Среди прочего, я пробовал следующее, но оно работает не работает:
def create_app():
app = Flask(__name__)
registry = CollectorRegistry() # Create new registry.
prometheus_client.REGISTRY = registry # Try to override global registry.
prometheus_client.registry.REGISTRY = registry # Try to override global registry.
@app.route("/")
def home():
return "Hello World!"
# More functions ...
@app.route("/metrics")
@FlaskInstrumentator.do_not_track()
def metrics():
data = generate_latest(registry)
headers = {
"Content-Type": CONTENT_TYPE_LATEST,
"Content-Length": str(len(data))}
return data, 200, headers
return app
Я обнаружил следующее qa при переполнении стека здесь . @ brian-brazil рекомендует объявлять метрики на уровне модуля, но тогда мне пришлось бы жестко закодировать имена меток, которых я хотел бы избежать. Некоторые используют handler
, другие method
или path
, поэтому я хочу оставить его настраиваемым.