是否可以获取有关您正在运行的实例的信息?我想输出一个简单的标识符,代码当前运行的实例用于记录目的。
答案 0 :(得分:3)
由于没有语言标记,并且看到了您的个人资料历史记录,我假设您使用的是GAE / J?
在这种情况下,实例ID信息嵌入在您可以通过ApiProxy.getCurrentEnvironment()
方法获得的其中一个环境属性中。然后,您可以使用键BackendService.INSTANCE_ID_ENV_ATTRIBUTE
从结果地图中提取实例ID。
即使密钥存储在BackendService中,此方法也适用于前端实例。总而言之,以下代码将为您获取实例ID:
String tInstanceId = ApiProxy.getCurrentEnvironment()
.getAttributes()
.get( BackendService.INSTANCE_ID_ENV_ATTRIBUTE )
.toString();
请注意,此方法完全没有由Google记录,并且可能会在未经警告的情况下发生变化。但由于您的用例仅用于日志记录,我认为现在就足够了。
答案 1 :(得分:1)
随着Modules的出现,您可以在a more elegant way中获取当前实例ID:
ModulesServiceFactory.getModulesService().getCurrentInstanceId()
答案 2 :(得分:1)
更好的是,您应该将调用包装在try catch中,以便它在本地也能正常工作。
导入此
import com.google.appengine.api.modules.ModulesException;
import com.google.appengine.api.modules.ModulesServiceFactory;
然后您的方法可以运行此
String instanceId = "unknown";
try{
instanceId = ModulesServiceFactory.getModulesService().getCurrentInstanceId();
} catch (ModulesException e){
instanceId = e.getMessage();
}
如果没有try catch,在本地运行时会出现一些令人讨厌的错误。
我发现这对于使用与pub-sub和其他位混合的端点进行调试非常有用,可以尝试确定某些事情的工作方式不同并确定它是否与新实例相关。
答案 3 :(得分:0)
之前不确定,但在 2021 年的今天,系统环境变量 user.js:54 Uncaught (in promise) SyntaxError: Unexpected end of input
at UserComponent.user (user.js:54)"
似乎包含实例 ID:
GAE_INSTANCE