2016-03-11 45 views
0

在Google App Engine上,请求可以通过多种方式启动:Web请求,cron作业,任务队列以及其他可能的方式。如何确定何时在GAE托管虚拟机上启动请求?

你怎么能(特别是在托管虚拟机上)确定当前请求开始的时间?

一个解决方案是仪器的所有入口点,并将开始时间保存在某个地方,但如果有一个环境变量或告诉何时请求开始会很好。这很重要的原因是因为许多GAE请求都有截止日期(在各种情况下为60秒或10分钟),并且确定您在做某些额外工作时请求留下了多少时间会很有帮助。

回答

0

我们没有特别暴露任何让您知道当前请求剩余多少时间的内容。您应该能够通过在请求的入口点记录时间并将其存储在线程本地静态中来完成此操作。

这需要听起来......可疑的。你为什么做这个?使用一个工人/队列模式进行轮询可能需要很长时间,这可能是一个更好的主意。

+0

这就是我现在正在做的事情,它很烦人,因为有多个入口点(cron作业,延迟,正常请求等),并且您需要对每个入口点进行测试。 Django中间件有所帮助,但是没有延迟库的中间件。我这么做主要是为了在第三方URL抓取上设置一个合理的超时时间。我想确保我总是将超时设置为小于必须完成请求的时间,以确保如果失败,我有足够的时间进行清理。 – speedplane

0

您可以在开发者控制台的日志中看到所有这些信息。必要时,您还可以将更多数据添加到代码中的日志中。

请参阅Writing Application Logs

+0

道歉,如果我的问题不清楚,但我想知道如何以编程方式做到这一点,即如果请求目前正在运行,请尝试找出您已经离开了多少时间。 – speedplane

+0

看看关机挂钩:https://cloud.google.com/appengine/docs/java/modules/ –