Google App Engine для псевдо-cronjobs? - PullRequest
3 голосов
/ 16 апреля 2009

Я ищу возможность создавать псевдо-задания, поскольку не могу использовать реальные задания в UNIX.

Поскольку сценарии Python могут работать неограниченное время, я подумал, что Python будет отличным решением.

В Google App Engine вы можете настроить скрипты Python, и это бесплатно. Поэтому я должен использовать App Engine.

App Engine позволяет 160 000 обращений к внешним URL-адресам (верно?), Поэтому вы должны иметь 160000/31/24/60 = 3,6 доступа в минуту.

Так что мой сценарий будет:

import time
import urllib
while time.clock() < 86400:
    # execute pseudo-cronjob file and then wait 60 seconds
    content = urllib.urlopen('http://www.example.org/cronjob_file.php').read()
    time.sleep(60)

К сожалению, у меня нет возможности протестировать скрипт, поэтому мои вопросы: 1) Как вы думаете, это будет работать? 2) Разрешено ли (Google TOS) использовать сервис для такой деятельности? 3) Правильно ли рассчитывается количество обращений к URL за минуту?

Заранее спасибо!

Ответы [ 5 ]

6 голосов
/ 16 апреля 2009

Может быть, я вас неправильно понимаю, но файлы конфигурации cron позволят вам это сделать (без Python). Вы можете добавить что-то вроде этого в ваш файл cron.yaml:

cron:
- description: job that runs every minute
  url: /cronjobs/job1
  schedule: every minute

См. документацию Google для получения дополнительной информации о планировании.

2 голосов
/ 17 апреля 2009

У Google есть некоторые ограничения на продолжительность выполнения задачи.

Вызовы URLFetch, сделанные в SDK, теперь имеют 5-секундный таймаут, здесь

Они позволяют вам планировать до 20 задач хрон в любой день. Здесь

1 голос
/ 17 апреля 2009

Вы можете уточнить, каким образом вы хотите это сделать

Вы хотите использовать appengine для запуска работы? Т.е. работа выполняется на сервере гугла?

или

Хотите ли вы использовать свой СОБСТВЕННЫЙ код на своем сервере и запускать его с помощью Google App Engine?

Если это первое: Google делает Cron сейчас. Используйте это:)

Если это последнее: вы можете использовать cron Google для запуска своего собственного, даже если это косвенно (т. Е. Google-cron вызывает google-app-engine, который вызывает ваше-app).

Если можете, раскрутите нить, чтобы выполнить работу, чтобы ваша страница сразу же вернулась. Не забывайте: если вы звоните http://whatever/mypage.php, и ваш браузер умирает (или в этом случае Google убивает ваш процесс за слишком длительный запуск), скрипт php обычно все еще работает до конца - вывод просто не идет никуда.

Если это не удастся, попробуйте раскрутить поток (не уверен, что вы можете сделать это в PHP, хотя - я новичок в PHP на C #)

А если ничего не помогает, получи лучший хостинг! Я плачу $ 6 / месяц или около того за dreamhost.com, и я могу запускать задания cron на своих серверах - это включено. Они делают PHP, Rails и др. Вы даже можете пропинговать мне код скидки :) (просмотреть профиль на сайте и т. Д.)

1 голос
/ 16 апреля 2009

Дублируйте, см. заданий cron в Google Appengine

Задания Cron теперь официально поддерживаются в GAE: http://code.google.com/appengine/docs/python/config/cron.html

0 голосов
/ 12 июня 2015

Делайте то, что сказал Ник Уайз, или также производите аутсорсинг cronjob, используя сервис, такой как www.guardiano.pm, чтобы вы могли фактически позвонить по адресу www.yoursite.com/myjob.php, и каждый раз, когда вы звоните по этому URL-адресу, будет выполняться то, что вы хотите.

Ps бесплатно Pss мой любимый проект и находится в бета-версии

...