gpt4 book ai didi

python - GAE REQUEST_LOG_ID 环境变量错误

转载 作者:太空狗 更新时间:2023-10-29 18:08:05 24 4
gpt4 key购买 nike

使用下面的代码,我发送了一封错误的电子邮件。我试图在电子邮件中包含指向 Cloud Console 日志的链接,但请求 ID 似乎有 30% 的时间是错误的。

如果我发现 ID 错误的请求,它几乎总是完美匹配,除了最后三个字符是 0(在 Stackdriver 控制台中)而不是 101(返回来自 env 变量),总是相同的替换 - 这是云控制台的错误还是我试图错误地使用这些 ID?

代码(精简版):

class ErrorAlertMiddleware(object):
def process_response(self, request, response):
if response.status_code == 500:
logger.info(os.environ.get('REQUEST_LOG_ID'))

msg = 'Link to logs: https://console.cloud.google.com/logs/viewer?' + '&'.join((
'project=%s' % MY_APP_ID,
'expandAll=true',
'filters=request_id:%s' % os.environ.get('REQUEST_LOG_ID'),
'resource=gae_app',
))

# this is a utility func that simply sends email
sendemail(ERROR_RECIPIENT, msg)
return response

请注意,我还记录了 REQUEST_LOG_ID 以确保它没有被编码或其他内容,并且日志输出与链接中显示的内容相匹配

最佳答案

使用 request.environ.get('REQUEST_LOG_ID') 代替 os.environ.get('REQUEST_LOG_ID')

os.environ['REQUEST_LOG_ID'] 可能会在当前请求开始和您访问它的时间之间发生变化,但是 request.environ['REQUEST_LOG_ID'] 请求初始化后不应更改。 The docs state如果一个请求 ID 大于另一个,则它比另一个晚发生。这意味着 Stackdriver 控制台中的 requestID 是在您的电子邮件链接中生成的。这让我觉得沿线的某个地方,os.environ['REQUEST_LOG_ID'] 正在从 '....000' 更新到 '.. ..101' 在您访问它之前,而 request.environ['REQUEST_LOG_ID'] 中的副本应保持不变。

有关 request.environ 的更多信息,请查看 google.appengine.runtime.request_environment.py 中的源代码。我还没有真正找到这方面的文档,但该代码让我相信 os.environ 的访问不如 request.environ 安全。

关于python - GAE REQUEST_LOG_ID 环境变量错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41604682/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com