2012-01-27 8 views
3

Есть ли способ определить, когда набор задач Google App Engine (и дочерние задачи, которые они порождают) имеют все завершено?Есть ли способ узнать, когда набор задач очереди задач приложения завершен?

Предположим, что у меня есть 100 задач для выполнения, и 10 из них порождают 10 дочерних задач. Это 200 задач. Давайте также скажем, что эти дочерние задачи могут порождать больше задач, рекурсивно и т. Д.

Есть ли способ определить, когда все задачи завершены? Я попытался использовать API-интерфейс API-интерфейса приложения, но не похоже, что он будет работать для моего конкретного варианта использования, хотя это отличный API.

Мой вариант использования заключается в том, что я хочу сделать целую кучу ограниченных URL-адресов, чтобы получать вызовы при одновременном письме на blob. В конце всех запросов на выбор URL-адресов я хочу завершить работу с блобом.

Я нашел решение с API-интерфейсом конвейера, но он так много пишет в хранилище данных, что для меня не было бы экономически выгодно, насколько часто мне нужно управлять конвейером.

+0

Вы уже видели Fantasm? есть интересная часть статьи, описывающая раздувание в: http://code.google.com/appengine/articles/fantasm.html#in, и можете ли вы предсказать количество заданий, которое было создано заранее? – proppy

+0

Hi Proppy, спасибо за это. Мой пример - фанатка, и в статье о фантазии, о которой вы говорите, говорится об использовании фан-в, чтобы оптимизировать операцию подсчета. Это может пригодиться, но я не знаю количества заданий заранее для моего конкретного случая использования, поэтому я думаю, что это будет означать, что я должен сделать какой-то рекурсивный подсчет. Я надеюсь, что у кого-то есть что-то, что может убрать меня от этого. –

+0

Как вы определили, что API-интерфейс трубопровода не будет экономически эффективным? Datastore пишет индивидуально довольно дешево, особенно там, где индексация не требуется. –

ответ

1

Невозможно написать постоянную среду хранения, а хранилище данных - единственная игра в городе. Вы можете написать свой собственный сервер, чтобы отслеживать доработки с использованием бэкэнд, но это очень много накладных расходов для простой задачи. Использование API конвейера - ваш лучший выбор.

+0

Я в порядке с записью в хранилище данных. Я не в порядке, используя API конвейера, чтобы сделать это, если это означает, что API собирается писать 5K больших объектов в хранилище данных для 90-120 заданий. Я не уверен, что мой код оптимизирован. Я даже не уверен, правильно ли использую API конвейера. У меня была помощь от сопровождающего проекта по коду, и, хотя я не могу сказать, что он работает так, как это для всех случаев использования, это то, что я испытываю на своем. $ 0,10 за 90-120 выборки URL и все учетные данные хранилища данных, которые идут вместе с этим (5K + большие объекты, которые записываются) –

+0

@JohnWheeler Я действительно удивлен этим. Какова природа сущностей? Я не могу думать о какой-либо причине, для чего потребуется нечто подобное многим сущностям или почему они будут «большими». –

+0

Это результат того, что я выполняю мой конвейер 4 раза. Каждый вызов конвейера заканчивается тем, что выполняет около 90-120 заданий. http://i.imgur.com/jigBP.png - Дайте мне знать, если вам интересно узнать что-то конкретное. –

Смежные вопросы