Google App Engine Барьерная синхронизация - PullRequest
2 голосов
/ 06 марта 2011

У меня запущено n параллельных задач. Когда все эти задачи будут выполнены, я хочу создать еще одну задачу. Каков наилучший способ сделать это? Поскольку операция с хранилищем данных идет медленнее, я использовал memcache. Я продолжаю увеличивать счетчик на 1, когда каждая задача завершена. Я продолжаю проверять счетчик для n. Поскольку memcache ненадежен, значение счетчика иногда теряется. Любые другие решения?

Ответы [ 2 ]

5 голосов
/ 06 марта 2011

Поскольку вы не можете позволить себе потерять свой счетчик, вам необходимо использовать хранилище данных, чтобы убедиться, что ваш счетчик не потерян (например, из-за неожиданного высвобождения памяти). Тем не менее, вы можете также сохранить значение в memcache - таким образом вы все равно сможете получать быстрые чтения счетчика из memcache (и перейти к хранилищу данных, чтобы получить счет, если запись в memcache истекла).

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

2 голосов
/ 22 апреля 2012

Я бы рекомендовал использовать appengine-pipe

Интенсивно реализует барьер с моделями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...