我的任务是使用Prometheus设置监视。接下来是整个想法:每次Prometheus从端点进行抓取(即发出GET请求)时,在Web服务器(现在只是Tornado)上启动适当的处理程序(Python脚本),该处理程序将执行并返回Prometheus收集的指标。
一切似乎都可以,但是问题是我使用Tornado是因为它是异步的,并且会引起问题(错误,难以处理的异常等),再加上没有太多的库可以很好地与asyncio配合使用,因此,我的处理程序通常不会异步工作,它们只是在线程中运行代码。
所以,我想要什么。我想将我的Web服务器设置为不异步管理Prometheus请求,而是使用诸如多处理之类的东西。我想象来自Prometheus的每个请求都像来自用户的单独连接一样,并且我想除了其他连接之外处理它(理想情况下,在单独的解释器过程中)。我假设可以通过使用一堆Web服务器(nginx),Python应用程序服务器(uWSGI)和Web框架(Flask或其他)来实现。看起来如何:
优点:每个请求都是单独处理的(它是独立的Python解释器进程),我们有很多扩展的可能性,快速查询不用等待缓慢,Python代码是同步的。
这对我来说是个好主意,还是可以更好?也许我错过了什么?抱歉,如果他在那里,很乱,谢谢您的建议。