Через очередь нашему сервису прилетают апдейты.
Он читает их и удаляет. Через 30 секунд попыток чтения переходит к следующему шагу
Он берет и кладёт их в новую "статическую" таблицу (в местное хранилище), сортирует и мерджит с существующей. Это занимает около минуты для добавления 10 записей к существующим 100
Он снова читает эту таблицу и проверяет статус в БД. После чего отправляет результат в другую очередь. Это занимает 5 секунд.
Он удаляет из таблицы обработанные записи с учётом особенностей хранилища. Ещё где-то за 40 секунд.
Сервис перезапускается
Вопрос: какого хрена надо так писать?
Вопрос 2: нарушения pep8, побочные эффекты функций вместе с возвращаемым значением, проверка истинности через is True и прочие чудеса в коде тоже присутствуют
Это работает на движке, ориентированном на обработку петабайт данных
Ну тогда может и норм.
это кластер из 10к машин, который изначально проектировался под мапредьюс.
Записи где-то по паре килобайт. Проблема в том, что там накладные расходы, которые не заметны, когда у тебя мапредьюс неделю считает и очень ощутимы, когда у тебя таска на миллисекунду.
А зачем вы его так используете? Положите себе sqlite-файлик на nfs-шару и норм будет
Я вообще не знаю зачем он тут! В крайнем случае можно было завести динамическую таблицу и обновлять построчно
Tishka17, ощущение, что вы пытаетесь с помощью ректалтных манипуляций давить прыщи на носу
У меня тоже такое ощущение