我编写了一个Python程序,用于将内容发布到Internet.there是一个名为send(x)的函数,x是我的帖子列表的第x条记录。我想调用函数如send(0),send( 1),....,速率约为5分钟/ post。如何通过使用cron配置来实现此任务?还是任务队列?
答案 0 :(得分:1)
我想我可以考虑在这里使用deferred.defer
。
def send_wrapper(value):
send(value)
deferred.defer(send_wrapper, value + 1, _countdown=5*60)
现在你只需要设法调用此方法一次(例如从处理程序),它将每隔5分钟调用send
一个递增的值。在这一切之下,它使用TaskQueue API和pickling来为延迟任务提供一个非常简单的界面。整齐。
当然,永久地调用它似乎有点奇怪,但添加逻辑来终止延迟调用序列并不会太难。
您的另一个选择是保留数据存储区中的值并使用cron ...它需要更多工作(并且需要db.Model
或ndb.Model
才能真正用于一个实体),但在一天结束时,它仍然可能不那么难实现。
答案 1 :(得分:-1)
你需要两者。首先,您可以将以下内容添加到cron.yaml文件中:
然后在你的router.py中你需要像
这样的东西webapp2.Route( '/任务/发送-更新', 'handlers.tasks.task_manager.SendUpdates'),
最后,您必须在处理程序/ tasks / task_manager.py中实现新的处理程序(SendUpdates)。
我建议研究[1]中给出的文件。
[1] https://cloud.google.com/appengine/docs/python/config/cron