Как передать аргументы в задачу Python Cron в Google App Engine? - PullRequest
3 голосов
/ 04 ноября 2011

У меня есть приложение, написанное на Python. Он собирает и анализирует данные из определенных источников (RSS, Atom, Twitter и т. Д.) И, если обнаруживаются новые данные, сохраняется в базу данных MySQL.

У меня есть много источников, определенных в самом приложении, и не все могут быть проверены в одно и то же время из-за ограничений (например, Twitter и его 350 запросов в час), поэтому идея состоит в том, чтобы проверять их отдельно, передавая источники в качестве аргументов.

myscript.py --update --source ABC (выборка, анализ, проверка и сохранение данных из источника ABC) myscript.py --update --source XYZ (выборка, анализ, проверка и сохранение данных из источника XYZ)

На данный момент у меня все отлично работает на моем локальном cron, но я бы хотел, чтобы это работало на 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 Cron. Есть обходные пути?

Ответы [ 2 ]

3 голосов
/ 05 ноября 2011

Поместите переменную источника в ваш URL-путь:

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...
0 голосов
/ 07 ноября 2011

Поскольку cron.yaml может быть обновлен только путем загрузки новой версии вашего приложения и имеет верхний предел для числа сущностей, вам будет лучше решить эту проблему, написав свое приложение, чтобы использовать очередь задач для планирования операции.

...