【问题标题】:How do I run a cron job on Google App Engine immediately?如何立即在 Google App Engine 上运行 cron 作业?
【发布时间】:2019-11-05 15:42:47
【问题描述】:

我已将 Google App Engine 配置为使用 ereporter 记录异常。

cron 作业配置为每 59 分钟运行一次。 cron.yaml 如下

cron:
- description: Daily exception report
  url: /_ereporter?sender=xxx.xxx@gmail.com  # The sender must be an app admin.
  schedule: every 59 minutes

如何立即运行。

我在这里尝试做的是模拟 500 HTTP 错误并查看通过 cron 作业立即传递的堆栈跟踪。

【问题讨论】:

    标签: google-app-engine


    【解决方案1】:

    只需从浏览器转到 URL。

    【讨论】:

      【解决方案2】:

      你不能使用 cron。 Cron 是一个调度系统,你可以让它每分钟运行一次。

      或者,您可以将整个处理程序包装在一个 try/except 块中并尝试捕获所有内容。 (例如,您可以对一些 DeadlineExceededErrors 执行此操作)然后启动一个调用 ereporter 处理程序的任务,然后重新引发异常。

      但是,在许多情况下,Google 基础架构可能是错误 500 的原因,您将无法发现该错误。老实说,您可能只能针对所有可能的错误 500 的子集发送电子邮件。最可靠的方法可能是让一个进程持续监控日志,并从那里发送电子邮件。

      请注意,您的电子邮件并不可靠或不快速,因此 1 分钟的 cron 周期可能已经足够快了。

      【讨论】:

      • 所以我可以每分钟运行一次 cron 作业。如果不是电子邮件,我还能如何发送通知?还有你提到的监控日志的过程,有没有这样的例子?
      • 电子邮件可能已经足够了。如果 cron 上的一分钟周期对你来说足够快,我会同意的。我对电子邮件可靠性的评论更多的是关于它也可能失败的事实,谷歌可能会遇到问题。如果您的电子邮件发送到 gmail 以外的其他地方,则中间邮件服务器可能会出现问题等...我上次遇到的错误 500 是在 3 月。
      • 我注意到有时 cron 作业(每 2 分钟一次)ereporter 不会收到我的异常并通过电子邮件发送它。我不确定为什么。是的,我在 gmail 上,不用担心。
      【解决方案3】:

      我也在尝试这样做时遇到了这个线程。我发现的一个(hacky)解决方案是在我的 cloudbuild.yaml 文件的末尾添加一个 curl 命令,该命令会在每个线程中立即触发该文件。希望这会有所帮助!

      Make a curl request in Cloud Build CI/CD pipeline

      【讨论】:

        猜你喜欢
        • 2017-12-17
        • 2017-11-30
        • 1970-01-01
        • 2018-07-06
        • 2013-10-20
        • 1970-01-01
        • 2010-11-17
        • 1970-01-01
        • 2010-11-08
        相关资源
        最近更新 更多