开发者

Consequences of an infinite loop on Google App Engine? [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance. Closed 9 years ago.

I am not a Google App Engine user. However, I understand you're billed for CPU time and other resources. Wha开发者_运维技巧t are the consequences if you happen to create an infinite loop? Will Google ever terminate it, or will you have to do it yourself manually somehow?

I'm a hobbyist developer worried about a small error that might end up costing hundreds.


(I'm a Google employee but have little experience with AppEngine. Please don't consider this an "official" response.)

I'm guessing you're using the Java servlet API - if not, please specify.

From the AppEngine servlet docs:

A request handler has a limited amount of time to generate and return a response to a request, typically around 30 seconds. Once the deadline has been reached, the request handler is interrupted.

I don't know how/whether this occurs in a tight-loop which wouldn't allow the VM to interrupt it in "normal" Java.


While Jon handled the low level case of an infinite loop, there could also be a situation where one of your handlers is called repeatedly an excessive amount of times - perhaps you accidentally configure something to back up your entire datastore every second instead of once a day. Theoretically, you could use up a lot of resources, even in 30 second chunks. However, you would still not be in danger of racking up a huge amount of charges. You have the option of setting a limit on how much you want to "spend" per day. If you have no quota left, your app will return an error, not put you into debtor's prison.


Google AppEngine imposes a limit on how long a request may take before it is terminated,

There is a roughly 30 second limit imposed on how long a request must take before it is terminated. However, shortly before the process is terminated, a DeadlineExceededError exception will be thrown.

Additionally there are per-minute quotas to prevent the application from consuming too much quota in a short period of time. It is very unlikely that your application will exceed the per-minute quota under normal conditions, but, if needed an increase to this quota can be requested.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜