Java Appengine模块:如何将错误处理程序路由到非默认模块?
我指的是文档中描述的Google Appengine的设置自定义错误响应,特别是以下代码:Java Appengine模块:如何将错误处理程序路由到非默认模块?,java,python,google-app-engine,module,gae-module,Java,Python,Google App Engine,Module,Gae Module,我指的是文档中描述的Google Appengine的设置自定义错误响应,特别是以下代码: error_handlers - error_code: default file: default_error.html - error_code: over_quota file: over_quota.html 目前,我正在运行一个应用程序,将代码放在单独的模块中,其中python作为app.yaml中配置的默认模块运行。其他模块的运行时采用php和java,通过
error_handlers
- error_code: default
file: default_error.html
- error_code: over_quota
file: over_quota.html
目前,我正在运行一个应用程序,将代码放在单独的模块中,其中python作为app.yaml中配置的默认模块运行。其他模块的运行时采用php和java,通过以下方式同时运行:
application: app-id
dispatch:
# Send favicon to default module - python
- url: "*/favicon.ico"
module: default
# Send script to java module
- url: "*/scripts/*"
module: javamodule
# Send others to php module
- url: "*/*"
module: phpmodule
一切似乎都按预期进行,但我需要知道我在这里遗漏了什么,因为我在app.yaml中放置了上述错误处理程序,但在未找到的页面(错误代码:404)上没有显示默认的错误处理程序,也没有在over quota上显示over quota.html(错误代码:503)
我把它们也放在其他模块中,也没有响应。我还确保错误响应文件的路径不会与静态文件处理程序路径重叠,并且两个html文件的大小都小于10 KB。我偶然发现了一种方法来解决我在Google AppEngine中应用程序的错误路由问题 根据我提出的要求,使用新名称部署我的模块,并重新安排和更新disptach.yaml上的模块名称和文档流,因此如下所示:
dispatch:
# Send styles to python module (default module)
- url: "*/styles/*"
module: default
# Send script to java module
- url: "*/scripts/*"
module: javamodule
# Send images to go module
- url: "*/images/*"
module: gomodule
# Send others to php module
- url: "*/*"
module: newphpmodule
我得出了一个结论,更改模块名称后会发生什么,导致错误路由工作,应用程序现在显示over_quota.htmlon over quota(错误代码503)
对于错误代码404,我同意上面Mars的评论,即我将使用一个简单的处理程序来生成自定义错误页面
它还确保错误响应文件的路径不与模块yaml文件中的静态文件处理程序路径重叠。因此,如果您的错误页面是html,那么指向错误页面的每个处理程序都必须是未注释的,如下所示:
#- url: /(.*\.(htm|html))$
# mime_type: text/html
# static_files: \1
# upload: (.*\.(htm|html))$
此外,如果我们已经决定将设置为超配额。如果出现超配额,则可以显示html,这是否是一种方便的方式,让用户或访问者知道网站何时将恢复在线
我已将我的应用程序账单设置为每日类型,因此它将在午夜时间以及我的每日配额重置为零。我得到了一个代码,可以使用javascript(无需jquery)计算从世界各地的用户本地时间到服务器午夜的时间,如下所示:
<span id="timer"></span>
<script>
var t=document.getElementById("timer"), wd=window||document, d=new Date(), md=new Date();
var tzone=md.getTimezoneOffset()/60; //get visitor timezone, (server timezone is -7,0)
md.setHours(24-(tzone-7)); md.setMinutes(0); md.setSeconds(0); md.setMilliseconds(0);
var dif=((md.getTime()-d.getTime())/1000);
var timer=setInterval(counter, 1000);
function counter(){
dif=dif-1; var h=Math.floor(dif/3600%24), m=Math.floor((dif%3600)/60), s=Math.floor(dif%60);
if(h>10){clearInterval(timer); t.innerHTML="0:00:00"; wd.location.reload(true);}
else{t.innerHTML=h+":"+(m<10?'0'+m:m)+":"+(s<10?'0'+s:s);}
}
</script>
var t=document.getElementById(“计时器”),wd=window | | document,d=new Date(),md=new Date();
var tzone=md.getTimezoneOffset()/60//获取访客时区(服务器时区为-7,0)
md.setHours(24-(tzone-7));md.setMinutes(0);md.setSeconds(0);md.setms(0);
var dif=((md.getTime()-d.getTime())/1000);
var定时器=设置间隔(计数器,1000);
函数计数器(){
dif=dif-1;var h=Math.floor(dif/3600%24),m=Math.floor((dif%3600)/60),s=Math.floor(dif%60);
如果(h>10){clearInterval(timer);t.innerHTML=“0:00:00”;wd.location.reload(true);}
else{t.innerHTML=h+”:“+(m404不是受支持的错误之一。因此,您可以使用简单的处理程序生成自定义错误页。对于503,您是否在日志中看到相应的条目?我记得有一条消息日志说,由于超出服务限制而出现问题。我一直在尝试在日志中搜索,但不知道如何找到它。这是overquo时的日志ta(错误代码503):11:39:06.899 503 970 B 17ms/208.122.6.102---[18/Nov/2014:20:39:06-0800]“GET/HTTP/1.1”503 970-“FreeWebMonitoring SiteChecker/0.2(+)”tophyips.info“ms=17 cpu\U ms=0 cpm\U usd=0.000108应用程序引擎发布=1.9.16