我使用uwsgi启动我的烧瓶服务器,它有15个工人,我想获得每个api的调用时间,并返回结果如下:
{
"api/students": 10,
"api/teachers": 20,
...
}
我为app添加了before_request句柄:
@app.before_request
def before_request_handler():
# here to do statistics
# count += 1
我写了一个api来获取计数值。 但是,我发现每次价值都没有增加,因为有多个工人,每次我只有一个工人的通话时间
那么,我的问题是如何收集Flask中所有工作人员的所有请求呼叫时间?
答案 0 :(得分:0)
你不能在工人之间跟踪这样的计数器,因为你会遇到如下问题:
在评论部分,建议使用g
对象,这不起作用,因为g
仅针对每个请求进行全局操作。每次请求后,g
都会被删除。
实现计数器的正确方法是使用第三方数据存储。数据库可以完成这项工作(并发可以在事务中处理),但建议使用像Redis或Memcached这样的缓存服务。