如何向Google App Engine上的Python定时任务传递参数?
我有一个用Python写的应用程序。它会从一些特定的来源(比如RSS、Atom、Twitter等)收集和解析数据,如果发现了新数据,就会把它保存到MySQL数据库里。
我在应用程序里定义了很多数据来源,但由于一些限制(比如Twitter每小时只能查询350次),并不是所有来源都能同时检查。所以我的想法是通过传递来源作为参数,分别设置定时任务来处理它们。
myscript.py --update --source ABC (从ABC来源获取、解析、检查并保存数据)
myscript.py --update --source XYZ (从XYZ来源获取、解析、检查并保存数据)
到目前为止,我在本地的定时任务上已经把这个搞定了,但我想在Google App Engine上运行这个,想要的效果是这样的:
cron.yaml:
cron:
- description: update source ABC
url: /myscript.py --source ABC
schedule: every 5 minutes
login: admin
- description: update source XYZ
url: /myscript.py --source XYZ
schedule: every 12 minutes
login: admin
我在App Engine的定时任务文档里没有找到任何方法来实现这个。有其他解决办法吗?
2 个回答
0
因为cron.yaml只能通过上传新版本的应用来更新,而且它对可以使用的实体数量有上限,所以你最好通过让你的应用使用任务队列来安排操作,这样会更有效。
3
把源变量放到你的网址路径里:
cron:
- description: update source ABC
url: /cron/ABC/
schedule: every 5 minutes
login: admin
- description: update source XYZ
url: /cron/XYZ/
schedule: every 12 minutes
login: admin
webapp.WSGIApplication([('/cron/([^/]+)/', CronHandler)])
class CronHandler(webapp.RequestHandler):
def post(self, source):
#do something with source variable...