Google App Engine动态后端不会停止

时间:2012-07-13 14:59:13

标签: google-app-engine

(如果这不是SO的问题,我很乐意转移到其他地方)

我有一个GAE后端,我想定期开始使用cron。在SO的其他问题的帮助下,我设置了像这样的backends.xml

<?xml version="1.0" encoding="UTF-8"?>
<backends>
 <backend name="myBackend">
   <class>B1</class>
   <instances>1</instances>
<options>
     <dynamic>true</dynamic>
   </options>
 </backend>
</backends>

和我的cron.xml一样

<?xml version="1.0" encoding="UTF-8"?>
<cronentries>
  <cron>
    <url>/doHardStuff</url>
    <description>doing long running stuff</description>
    <schedule>every 3 hours</schedule>
    <target>myBackend</target>
  </cron>
</cronentries>

我使用mvn-gae上传它(我用maven编写java中的所有内容)并使用目标gae:deploy gae:backends-list gae:backends-update

一切都很好,长时间运行的东西已经完成,然而。即使在完成所有操作之后,动态后端仍会运行并吃掉我的每日后端配额。在servlet完成其工作后,我可以在日志中看到_ah/stop请求;然而,后端仍在运行。

如果我在主要的引擎网络控制台中手动停止 - &gt;后端 - &gt;开始/停止,它停止吃我的配额,但是, 将在cron的给定时间运行,而cron作业将失败。

我该怎么办?我希望后端在给定时间启动在请求结束且机器空闲时停止。我不希望它在不同的时间运行。

2 个答案:

答案 0 :(得分:1)

根据网上的一些网页,似乎需要15分钟才能停止。

这似乎有可能,我会尝试。

答案 1 :(得分:1)

它按照预期工作。动态后端始终在仪表板的后端选项卡中“启动”,这意味着它们可以获取请求并在需要时启动实例。这不会消耗任何配额。

当后端获得请求时,它会使用/_ah/start/启动实例并消耗配额。当它没有任何请求服务几分钟时,它会通过/_ah/stop/请求停止实例。

要确定后端实例是否仍在运行,请切换到实例选项卡,然后选择后端“版本”。

请注意,动态后端有15分钟的配额惩罚,这可能是配额使用率高于预期的原因。

  

对于动态后端,结算在最后一个十五分钟后结束   请求已完成处理。

http://developers.google.com/appengine/docs/python/backends/overview#Billing_Quotas_and_Limits