万事须己运,他得非我贤。这篇文章主要讲述没有在Google App Engine中安排的Cron作业相关的知识,希望能为你提供帮助。
我想在GAE中创建一个cron作业,但我不希望它被安排。我想在需要的时候手动调用它。
我应该在schedule元素中添加什么?
答案来自Scheduling Tasks With Cron for Python:
cron作业按计划对URL发出HTTP GET请求。该URL的处理程序在调用时执行逻辑。因此,正如@snakecharmerb所提到的,你必须创建该处理程序,执行你想要的cron作业,并将其映射到所需的cron url。
为了避免调度,您只需不上传cron配置,而是手动触发作业,方法是使调度程序以其他方式执行相同的GET请求,例如使用
curl
:curl https://your_app.appspot.com/cron_handler_url
另一答案在阅读之前,虽然它确实有效,但这有点令人讨厌。
我需要类似的东西,主要是因为需要稍长的处理时间而不是60秒。
在我的
cron.yaml
我指定:- description: My example cron
url: /cron/my/example/cron
schedule: 25 of dec 12:00
然后在我的处理程序中,我检查日期是否是12月25日并放弃请求。
这似乎是拥有“手动”cron的唯一方法。
【没有在Google App Engine中安排的Cron作业】在python中,查看日期很简单。
from datetime import datetime
import logging
now = datetime.utcnow()
if now.day == 25 and now.month == 12:
logging.info("Skipping as it's the 25th December")
return
推荐阅读
- 为Google Cloud AppEngine配置MemSql
- AppEngine文档建议使用命令行标志而不是app.yaml文件元素
- 我在哪里可以看到Google App Engine中的日志()
- 随机时间段内使用Java Google App Engine Standard的memcache中的服务错误
- SciPy和App Engine
- Appengine Flex上的UDP服务器()
- Google App Engine检查更新
- 将Scala.js与NPM和Browserify结合使用
- 用PeerJS驯服WebRTC(制作一个简单的P2P网络游戏)