我想设置一个只能通过app-engine ui触发运行的cron作业(按app-engine上的按钮)
如何将cron.xml设置为不包含调度?
<?xml version="1.0" encoding="UTF-8"?>
<cronentries>
<cron>
<url>/match</url>
<description>find buddies to all users</description>
<schedule>----?-----</schedule>
</cron>
</cronentries>
答案 0 :(得分:1)
似乎你真正需要的是Task Queues,它们是设计用于处理主请求线程的任务。它们在后台实例上工作,因此它们被赋予与cron执行相同的限制(10分钟限制等)
调试PaaS总是很混乱,Google整合了Stackdriver debugger,但我并不清楚你想要实现的目标。
答案 1 :(得分:0)
AFAIK这是不可能的。
我看到2个可能的替代方案,基于GUI控制的标志,指示&#34; cron&#34;工作应该运行与否:
,或者
<强>更新强>
延迟库至少有一个缺点:无法访问延迟函数内的请求处理程序。但延迟功能也可以在Task Queues中找到(由@ jirungaray提供答案) - 使用taskqueue.add()的可选countdown
或eta
个参数:
倒计时 - 此任务应运行或租用的未来秒数。默认为零。如果,请不要指定此参数 你指定了一个eta。
eta - 一个
datetime.datetime
,指定任务运行的绝对最早时间。如果,则无法指定此参数 指定了倒计时参数。这个论点可以是时间 区域感知或时区天真,或设置为过去的时间。如果 参数设置为None,默认值为now。对于拉动任务,没有 工人可以在eta指示的时间之前租用任务 参数。
这使得任务队列优于延迟库。
答案 2 :(得分:-1)
cron作业只是在给定时间调用您的处理程序。如果您不想安排,只需在浏览器窗口中键入您的处理程序,然后按Enter键,例如:
https://my-app.appspot.com/generate_report
结果与在控制台中按“立即运行”按钮相同。
如果需要,您还可以使用代码在执行之前检查的一些令牌来保护此处理程序。