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