Асинхронная запись в двоичный объект appengine и его завершение после завершения всех задач
У меня сложная проблема.
Я перебираю набор URL-адресов, параметризованных по дате, и выбираю их. Например, вот пример одного:
somewebservice.com?start=01-01-2012&end=01-10-2012
Иногда содержимое, возвращаемое из URL-адреса, усекается (пропуская случайные результаты с приложенным сообщением об усеченной ошибке), поскольку я определил слишком большой диапазон, поэтому приходится разбивать запрос на два URL-адреса.
somewebservice.com?start=01-01-2012&end=01-05-2012
somewebservice.com?start=01-06-2012&end=01-10-2012
Я делаю это рекурсивно, пока результаты больше не усекаются, а затем пишу в большой двоичный объект, который позволяет выполнять параллельные записи.
Каждый из этих вызовов извлечения URL / записи BLOB-объектов обрабатывается в отдельной задаче очереди задач.
Проблема в том, что я не могу на всю жизнь придумать схему, чтобы знать, когда все задачи выполнены. Я пытался использовать заштрихованные счетчики, но рекурсия затрудняет. Кто-то предложил мне использовать Pipeline API, поэтому я наблюдал, как Слаткин разговаривает 3 раза. Похоже, он не работает с рекурсией (но я признаю, что до сих пор не до конца понимаю библиотеку).
Есть ли какой-либо способ узнать, когда набор задач из очереди задач (и дочерних элементов, которые порождаются рекурсивно) завершены, чтобы я мог завершить работу с большим двоичным объектом и делать с ним что угодно?
Спасибо Джон