0

(如果这不是 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

一切都很好,但是长时间运行的东西已经完成。即使完成了一切,动态后端仍然运行并吃掉我每天的后端配额。_ah/stopservlet 完成工作后,我可以在日志中看到请求;但是后端仍然在那之后运行。

如果我在 Main -> Backends -> Start/Stop 的引擎 Web 控制台中手动停止它,它会停止占用我的配额,但是,它不会在 cron 中的给定时间运行,并且 cron 作业将失败。

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

4

2 回答 2

1

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

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

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

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

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

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

于 2012-07-13T18:11:18.553 回答
1

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

这似乎是可能的,我会试试看。

于 2012-07-13T15:20:23.790 回答