У меня есть приложение Django, которое должно отслеживать учетную запись электронной почты, на которую пользователи отправляют электронные письма. Например, он сохранит тему электронного письма в базе данных, если отправитель уже зарегистрирован. Настоящее приложение сложнее, чем этот пример, поэтому я хочу настроить задачу сельдерея для обработки электронной почты в фоновом режиме распределенным способом. У меня уже есть задача с сельдереем для асинхронной отправки писем, но есть несколько вопросов, по которым я хотел бы узнать ваше мнение об обработке полученных писем:
1) есть ли способ постфикса (или чего-то еще подобного) для PUSH новых писем в скрипт python? Если нет, то я должен периодически опрашивать почту от сельдерея, верно?
2) чтобы убедиться, что каждое электронное письмо обрабатывает один и только один работник, что из следующего лучше?
чтобы одна задача опрашивала почтовый ящик, а затем распределяла задания среди нескольких рабочих для обработки (например, каждый работник получает N электронных писем)
чтобы несколько сотрудников опрашивали почтовый ящик, и каждый получал несколько писем
3) для опроса почтового ящика, поскольку я могу получить доступ к почтовому серверу напрямую, я предполагаю, что опрос файлов более эффективен, чем опрос через IMAP. есть ли обратная сторона этого?
моя текущая схема (запланирована, но еще не реализована / протестирована, так что это всего лишь приблизительная идея ...)
- иметь N рабочих (скажем, N = 10) опрашивать входящие (по файлам)
- есть функция для расчета хеш-значения для каждого электронного письма
- рабочий m получает электронное письмо, если: (его хэш% N) = m. таким образом каждое электронное письмо обрабатывается одним и только одним воркером, но проблема в том, что если воркер не работает, некоторые из писем никогда не будут обработаны! Как это побороть?
Спасибо, что сообщили мне свое мнение!