【问题标题】:A simple Cron job on frontend servers and no backends. Fails前端服务器上的简单 Cron 作业,没有后端。失败
【发布时间】:2013-11-19 00:07:53
【问题描述】:

我在安全(仅限管理员)路径 /cron?method=sendMail 上配置了一个简单的 cron 作业,每天发送一封电子邮件。 url 端点处的 servlet 是一个 jsp 文件,其中包含发送电子邮件的代码。

这是通过带有完整网址的前端进行的测试,并且可以正常工作。

我没有配置任何后端服务器。仅具有 1 个常驻和动态的前端实例。

问题是cron 成功触发,但请求失败并显示以下消息。

0.1.0.1 - - [17/Nov/2013:01:07:44 -0800] "GET /cron?method=sendMail HTTP/1.1" 503 364 - "AppEngine-Google; (+http://code.google.com/appengine)"

此请求不断重试并不断失败。

但是完整的 url 有效。设置有什么问题?我错过了什么?

另外,如何停止重试?

我使用的 cron 条目是这样的

<cron>
    <url>/cron?method=sendMail</url>
    <description>Send mail</description>
    <schedule>every mon,tue,wed,thu,fri,sat,sun 11:30</schedule>
    <timezone>Asia/Calcutta</timezone>
</cron>

【问题讨论】:

  • 您使用的 cron 条目是什么?
  • @ansh0l &lt;cron&gt; &lt;url&gt;/cron?method=sendMail&lt;/url&gt; &lt;description&gt;Send mail&lt;/description&gt; &lt;schedule&gt;every mon,tue,wed,thu,fri,sat,sun 11:30&lt;/schedule&gt; &lt;timezone&gt;Asia/Calcutta&lt;/timezone&gt; &lt;/cron&gt;
  • 从你的这行,available at secure(admin only) path,它可以在没有身份验证的情况下工作吗?
  • @ansh01 cron 如果我删除了安全性,那么我如何保护现在对公众开放的 URL!
  • 确定已修复。问题在于@ansh01 推动的身份验证

标签: google-app-engine cron frontend backend jobs


【解决方案1】:

使用文档中的以下提示解决了该问题以保护 url

来自 Cron 服务的请求还将包含一个 HTTP 标头:X-AppEngine-Cron: true

X-AppEngine-Cron header 由 Google App Engine 内部设置。如果您的请求处理程序找到此标头,它可以相信该请求是一个 cron 请求。如果标头出现在对您的应用程序的外部用户请求中,则会被剥离。

【讨论】:

    猜你喜欢
    • 2020-06-16
    • 1970-01-01
    • 2012-07-11
    • 2017-10-25
    • 2011-06-15
    • 1970-01-01
    • 1970-01-01
    • 2019-06-30
    • 2015-03-20
    相关资源
    最近更新 更多