Как стать автором
Обновить

Комментарии 4

Интересный момент в коде:
subchunk_ids = ids[subchunk_start : min(subchunk_start + PRODUCER_SUBCHUNK_SIZE, total)]

Всю голову сломал зачем нужен min. Не в первый раз вижу такой прием, не могу понять что он дает.

В данной ситуации этот приём действительно ничего не даёт, поскольку срез списка с выходом за его длину корректно вернёт элементы до конца списка (или пустой список). Это может быть полезно при обработке списка чанками, чтобы на последней итерации не выйти за его границу, что в приведённом коде не будет ошибкой. Спасибо за замечание!
Действительно интересный пример работы с asyncio объектами, но почему не захотели связываться с нативным способом массовой рассылки в Mailgun? Там для каждого email можно установить свой контекст. А трекать логи и ошибки через API.

Мы рассматривали такой вариант, но у мейлгана довольно простой механизм рендера шаблонов с подстановой значений, чего нам не достаточно. Мы используем практически все возможности jinja2, работая при этом с шаблонами в рантайме, включая наследование шаблонов, макросы, l10n и множественные формы слов, автоматическую постановку utm меток, а также ленивую генерацию контекстов для шаблонов. Поэтому мы решили сначала попробовать ускорить рассылки, не жертвуя гибкостью сервиса

Зарегистрируйтесь на Хабре, чтобы оставить комментарий