1
keysona 2017-10-11 19:44:01 +08:00
我是直接 md5 当前的时间戳,取前面 16 位的。
|
2
187j3x1 2017-10-11 19:49:55 +08:00
uuid 啊,标准库
|
3
everhythm 2017-10-11 19:53:50 +08:00 1
|
4
workwonder OP @187j3x1 UUID 还得找时机生成并挂到 request 对象上,这个最早时机是什么时候?
其实我想知道的是 flask 内部不同的 request 上下文是否有什么标识可以区分,比如 `id(request)` 或 `id(request.some_attr)` 是否可以。 |
5
187j3x1 2017-10-11 19:59:59 +08:00
|
6
odirus 2017-10-11 20:01:31 +08:00 1
分享一个其他方法,如果前面有 nginx 的话,
nginx v1.11 支持 $request_id 变量;通过 proxy_set_header X-Request-Id $request_id 的方式把请求唯一 ID 写到 header 中 在 flask 中通过获取头信息的方式即可 |
7
workwonder OP @odirus 多谢,通过 Nginx 是不错的方法,这样能和 Nginx 日志整合到一起来追溯。
|
10
iyaozhen 2017-10-11 21:40:59 +08:00
@workwonder 目前最佳实践是通过 nginx 生成,带到后端的同时返回给前端,方便问题定位。其实 request_id 还可以带上语义,比如说当前时间、机器 ip 等
|
11
workwonder OP @iyaozhen nice
|
12
jyf 2017-10-12 15:46:40 +08:00 1
你可以考虑用 xid 方案 比 uuid 短 可排序 带时间戳段位 机器应该能支持几百台规模 再多就不行了 当然你可以自己做个扩容实现
|
13
workwonder OP https://gist.github.com/wonderbeyond/ae7c27be9536d65966f5d94464df0d96
实际需求很简单,我实现的也很简单。 可为什么以 "flask request id" 为关键词找到的别的实现看起来有点复杂而且有点绕,或者完全不是一个意思: - https://pypi.python.org/pypi/flask-request-id-middleware/1.0 - https://pypi.python.org/pypi/flask-request-id/0.1 - https://github.com/Workable/flask-log-request-id |