(如果这不是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作业将失败。
我该怎么办?我希望后端在给定时间启动,在请求结束且机器空闲时停止。我不希望它在不同的时间运行。
答案 0 :(得分:1)
这似乎有可能,我会尝试。
答案 1 :(得分:1)
它按照预期工作。动态后端始终在仪表板的后端选项卡中“启动”,这意味着它们可以获取请求并在需要时启动实例。这不会消耗任何配额。
当后端获得请求时,它会使用/_ah/start/
启动实例并消耗配额。当它没有任何请求服务几分钟时,它会通过/_ah/stop/
请求停止实例。
要确定后端实例是否仍在运行,请切换到实例选项卡,然后选择后端“版本”。
请注意,动态后端有15分钟的配额惩罚,这可能是配额使用率高于预期的原因。
对于动态后端,结算在最后一个十五分钟后结束 请求已完成处理。
http://developers.google.com/appengine/docs/python/backends/overview#Billing_Quotas_and_Limits