2009-04-16 3 views
3

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

Поскольку скрипты 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 в минуту?

Заранее благодарен!

+0

Cron рабочих мест на AppEngine ограничены до предела запроса времени, которое составляет 30 секунд - так что он не может работать «в течение неограниченного периода». – dar

+0

Извините, что вы на самом деле имеете в виду? Я думаю, что сам Python не имеет ограничений по времени, не так ли? Единственное ограничение времени ожидания - в браузере клиента. Но если вы выполняете файл cronjobs, клиента нет. Или Google App Engine имеет собственное ограничение по времени, чтобы избежать длительных сценариев? – caw

+0

Фактически, ограничение времени накладывается на серверную сторону, так что да, это позволяет избежать сценариев, занимающих слишком много времени. – fuentesjr

ответ

6

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

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

Посмотреть Google's documentation для получения дополнительной информации о планировании.

+0

Нет, ты меня не недопонимаешь. Я не знал, что сейчас работает служба вакансий. Но я не могу добавить внешние URL-адреса в службу заданий cron, не так ли? Поэтому я все равно должен использовать скрипт Python, который вызывает внешний файл. Правильно? – caw

2

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

UrlFetch вызовы, сделанные в SDK теперь есть 5 секунд ожидания, here

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

+0

Спасибо, поэтому он не очень подходит для создания псевдо-cron-заданий. – caw

1

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

Вы хотите использовать AppEngine для выполнения задания? Т.е. работа выполняется на сервере Google?

или

вы хотите использовать свой код на сервере, и запустить его с помощью Google App Engine ли?

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

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

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

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

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

+0

Большое спасибо! Я хочу, чтобы он работал во втором упоминании. Он должен просто запустить сценарий на моем внешнем веб-сайте. Но могу ли я использовать Google App Engine только для запуска моих заданий cron (Условия обслуживания)? – caw

+0

Я не очень внимательно прочитал TOS, но я не понимаю, почему нет. Это просто URL-адрес, который, я думаю, вам разрешено делать. –

0

Сделайте то, что сказал Nic Wise, или также передайте сторонний cronjob с помощью службы, например www.guardiano.pm, чтобы вы могли фактически позвонить по адресу www.yoursite. com/myjob.php, и каждый раз, когда вы вызываете этот URL-адрес, вы будете исполнены.

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