API-эндпоинт для ожидания опустошения очереди писем?

Здравствуйте,

После отправки писем через конечную точку API /admin/email/handle_mail, они планируются к обработке. Существует ли конечная точка API, чтобы дождаться, пока очередь опустеет? Или получить размер очереди?

С уважением

Какую проблему вы испытываете и пытаетесь решить?

Не совсем понимаю, что вы имеете в виду? Есть ли какая-то неясность в описанной выше проблеме?

Вы просите решение, но неясно, в чём именно проблема. В основном такие сообщения обрабатываются довольно быстро, и это не является проблемой. Я думаю, что если они находятся в очереди, вы можете получить список из Sidekiq.

Зачем вам нужен список сообщений в очереди? В большинстве случаев очереди вообще не существует.

Вы ошибаетесь: обработка почты асинхронна и выполняется в очереди, поэтому имеет смысл подождать, пока очередь опустеет.

На данный момент, я не думаю, что мы предоставляем какой-либо API для этого. Ближайшее, что у нас есть, — это веб-интерфейс Sidekiq для очереди по умолчанию, где эта задача будет ожидать по адресу /sidekiq/queues/default.

Так как обработка писем происходит последовательно, можно использовать следующее решение:

  • На странице /admin/email/handle_mail отправьте письмо с уникальной темой, например Red Lantern (timestamp), на адрес categoryname@example.com.
  • Найдите ID категории, для которой настройка email in установлена в значение categoryname@example.com.
  • Выполните поиск со следующими параметрами:
    • ‘term’ = Red Lantern (timestamp)
    • ‘search_context[type]’ = ‘category’
    • ‘search_context[id]’ = ID категории
  • Пройдитесь по элементам ‘topics’ в результатах и сравните значение ‘title’ с Red Lantern (timestamp).
  • Если совпадение найдено, это означает, что все письма, отправленные до этого, уже обработаны.
  • Удалите тему Red Lantern (timestamp), используя topic['id'] из результатов поиска, через удаление.