Письма в режиме рассылки не отправляются для некоторых первых постов

Спасибо, Кэмерон, здорово это слышать! Я планирую закрыть эту тему через
ещё месяц. Если она будет закрыта и возникнет новая проблема, не стесняйтесь
открыть новую тему :slight_smile:

Возможно, я нашёл одно из моих расхождений.

У меня есть заголовок письма для I can't install libraries - #2 by MRAB - Python Help - Discussions on Python.org,
но нет заголовка для первого сообщения. Ниже я добавил полученный заголовок.

Не могли бы вы проверить, что говорят ваши записи о заголовке первого сообщения?
Оно должно содержать message-id <discourse/post/72724@discuss.python.org>,
но этот message-id не отображается в моих логах почтового фильтра.

Спасибо,
Кэмерон Симпсон cs@cskk.id.au

Вот заголовки второго сообщения:

Return-Path: <incoming+verp-7a67e4e43670863710e0bebf82466d20@python1.discoursemail.com>
X-Original-To: cs@cskk.id.au
Delivered-To: cs@cskk.id.au
Received: from mx-out-01b.sea2.discourse.cloud (mx-out-01b.sea2.discourse.cloud [184.105.176.58])
         (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits))
         (No client certificate requested)
         by mail.cskk.id.au (Postfix) with ESMTPS id 2F85142106
         for <cs@cskk.id.au>; Tue,  1 Nov 2022 02:06:11 +0000 (UTC)
Received: from localhost.localdomain (unknown [IPv6:2602:fd3f:3:207:0:242:ac11:b])
         by mx-out-01b.sea2.discourse.cloud (Postfix) with ESMTP id 66C61100455
         for <cs@cskk.id.au>; Tue,  1 Nov 2022 02:06:09 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=discoursemail.com;
         s=sea2; t=1667268369;
         bh=dqc9opBcaL3Sz5b7apIIcM2hRhdys9o0z9IGxAzk4i4=;
         h=Date:From:Reply-To:To:In-Reply-To:References:Subject:
         List-Unsubscribe:List-ID:List-Archive;
         b=nuQKrBE6H2us2CerZzzR2yDWOnGG7R4kRgmH21VHpzOh/onYgIPtSFsguZ1nDYXXr
         t/+2pfIXGpl/wRRPuAppWH7IOLzJt5bv/+QbAflcKduBbATnRoVnEokbVLRJjg7fmS
         vvYcR3BPcaWV5LbVhw3/9F32/XqDtyHvb04kS0lmS230xvEN+IVJ1F43fAq+OOfp2j
         xboY8fyRJJ245gCTO07Bx/AE5tdrJ5sFrOeTmlz0gn9NJaKYgQxEOxqtWSulX8IyT0
         erHwnaEg6prJFWjGtxrhiZfe5EtqMVop5XaTI4hbxD++9ndJIHS5rCNn9jjurwWB4u
         5UToaINnQoDsQ==
1 лайк

Дополнение. Похоже, Discourse обрезал мою вставку заголовков.
Я размещу их здесь через веб-форум вместо отправки по электронной почте:

Возможно, это проблема отображения. В исходном тексте, который виден при редактировании этого сообщения, заголовки присутствуют полностью. Я загрузил их как файл. Думаю. — Кэмерон
hdrs.txt (2.7 КБ)

1 лайк

@martin Ты видел пост выше? Похоже, уведомление о первом посте не пришло на почту. - Кэмерон

1 лайк

Да, спасибо, Кэмерон, моя вина, я забыл ответить. На этой неделе я был завален другими делами, плюс у меня был выходной в середине недели. Я поставил напоминание разобрать это в понедельник и тогда уже дать полноценный ответ.

1 лайк

Не волнуйся, просто уточняю. — Кэмерон

2 лайка

Подтверждаю, что в наших почтовых логах для Python указан правильный Message-ID. Скорее всего, в данном случае произошло следующее: исходное сообщение (OP) было опубликовано в категории «Packaging», а вскоре после этого перемещено в категорию «Python Help», что могло повлиять на отправку писем. Похоже, что для исходного сообщения письмо получили только 5 человек, а для второго сообщения — 30 человек (включая вас). Возможно, стоит просто понаблюдать, не повторится ли это, чтобы выявить закономерность. В нашей системе рассылки существует множество механизмов для предотвращения отправки писем в определённых случаях, и, возможно, мы просто столкнулись с одним из них.

1 лайк

[quote=“Кэмерон Симпсон, пост:94, тема:233499,
username:cameron-simpson”]
Сообщение должно было иметь идентификатор discourse/post/72724@discuss.python.org,
но этот идентификатор не отображается в моих логах почтового фильтра.
[/quote]

Подтверждаю, что в наших почтовых логах для Python указан правильный Message-ID.

Отлично.

Полагаю, в данном случае произошло следующее: исходный пост (OP) был размещён
в категории «Packaging», а вскоре после этого переведён в категорию
«Python Help», что могло повлиять на отправку писем. Похоже, что для
исходного поста письма получили только 5 человек, а для второго поста — 30
(включая вас). Возможно, стоит просто понаблюдать и посмотреть, повторится ли
это, чтобы выявить закономерность. В нашей почтовой системе существует множество
«коротких замыканий», предотвращающих отправку писем в определённых случаях,
и, возможно, мы просто столкнулись с одним из них.

Это интересно. У меня включён режим рассылки, и, насколько мне известно, категория
«Packaging» для меня не отключена. Неужели я не должен был получить письмо
по поводу исходного поста?

Стоит ли использовать меня как известный случай неполучения письма для анализа
этих «коротких замыканий»?

С уважением,
Кэмерон Симпсон cs@cskk.id.au

1 лайк

Вот ещё один пример, где я получил второй пост, но не исходное сообщение:

2 лайка

И еще один пример, где я получил второй пост, а не оригинальное сообщение.

2 лайка

И вот ещё один пример: Why I can't do 'conda activate <env>' in JupyterLab? - Python Help - Discussions on Python.org, где у меня есть второй пост, но не первый. Хотя автор темы (OP) написал в августе.

1 лайк

И ещё один: os.scandir should have an option to also yield the path itself - Ideas - Discussions on Python.org

По этой теме у меня есть только пост 6.

… и @martin, можно ли отменить автоматическое закрытие этой темы, пожалуйста?

2 лайка

Извините, сейчас внутри очень много дел. Спасибо за дополнительные примеры — я постараюсь найти среди них закономерность.

Вы имеете в виду эту тему на meta? Или ту, на которую вы ссылаетесь: os.scandir should have an option to also yield the path itself - Ideas - Discussions on Python.org? Ни одна из них, похоже, не имеет автоматического закрытия.

Извините, сейчас у нас много внутренних дел. Спасибо за дополнительные примеры — я постараюсь найти в них закономерность.

Ничего страшного. И не торопитесь.

Вы имеете в виду эту тему на meta?

Эта ветка на meta. Вчера (или?) там указывалось, что она закроется автоматически через 2 недели, исходя из ваших настроек здесь:

Но похоже, сейчас эта функция отключена, так что всё в порядке.

С наилучшими пожеланиями,
Cameron Simpson cs@cskk.id.au

1 лайк

Извините, это был я. :slightly_smiling_face: Я убрал таймер после того, как прочитал ваш пост с просьбой его отключить. Я поставил небольшой «Лайк» в знак признательности, но, возможно, это было слишком незаметным намеком. :slightly_smiling_face:

3 лайка

Для меня это было слишком незаметно. Как вы, наверное, догадались из обсуждения, я в первую очередь предпочитаю электронную почту.

Но также я читал «Снежный криш», так и не заметив, что имя главного героя — игра слов. Так что, если вы рассчитываете на subtlety, вам предстоит нелёгкая борьба со мной :slight_smile:

С уважением,
Кэмерон

5 лайков

Сейчас я использую этот случай в качестве примера. Пока что, просматривая код шаг за шагом, ничего подозрительного не обнаружено. Согласно нашей таблице EmailLog, ни один пользователь не получил письмо с исходным сообщением (OP) этой темы, но причина этого неясна. Если я проделаю те же шаги, что и в discourse/app/jobs/regular/notify_mailing_list_subscribers.rb at 23ac0cf8f1f5d7aede3991c6947530dc1af7f7a2 · discourse/discourse · GitHub, но остановлюсь перед отправкой писем, всё выглядит так, будто должно произойти правильное действие. Записей для OP в таблице SkippedEmailLog также нет. Возможно, задача завершилась неудачей и затем каждый последующий повтор тоже провалился, но я в этом сомневаюсь.

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

1 лайк

[quote=“Кэмерон Симпсон, пост:102, тема:233499,
username:cameron-simpson”]
И ещё один пример, где я получил второй пост, а не исходный (OP).
[/quote]

Я использую этот пример сейчас. Пока что, просматривая код, я ничего подозрительного не обнаружил. Никто не получил письмо по поводу исходного поста (OP) этой темы согласно нашей таблице EmailLog, но причина не ясна, поскольку если я пройду по тем же шагам, что и в discourse/app/jobs/regular/notify_mailing_list_subscribers.rb at 23ac0cf8f1f5d7aede3991c6947530dc1af7f7a2 · discourse/discourse · GitHub, и остановлюсь перед отправкой писем, то кажется, что всё должно сработать правильно. Записей для OP в SkippedEmailLog тоже нет. Возможно, задача не выполнилась и затем не выполнялась при каждой последующей попытке, но я в этом сомневаюсь.

Верно. Я тоже не вижу ничего неправильного в этом коде, если только нет странных проблем с конструкцией NOT EXISTS. Но на мой наивный взгляд, всё выглядит нормально.

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

Спасибо. Я буду держать вас в курсе, как только увижу новые случаи.

С уважением,
Кэмерон Симпсон cs@cskk.id.au

1 лайк

Ещё один пример сегодня: Printing only duplicates from a list - Python Help - Discussions on Python.org

Я получил второй пост, но не первый:

[~/var/log/mailfiler]fleet2*> agf discourse/post/78942@discuss.python.org *log
main.log
5551250:2022-12-24 08:25:19,937 Level 25 mailfiler: monitor: +spool:   +spool/new/1671830717.M998823P71474Q174.fleet2.l <discourse/post/78942@discuss.python.org>
5552015:2022-12-24 08:25:37,173 Level 25 mailfiler: monitor: +spool-in:   +spool-in/new/1671830719.#5973M944325P789 <discourse/post/78942@discuss.python.org>

spool-in.log
3606809:2022-12-24 08:25:37,173 Level 25   +spool-in/new/1671830719.#5973M944325P789 <discourse/post/78942@discuss.python.org>

spool.log
3243627:2022-12-24 08:25:19,937 Level 25   +spool/new/1671830717.M998823P71474Q174.fleet2.l <discourse/post/78942@discuss.python.org>
[~/var/log/mailfiler]fleet2*> agf discourse/post/78934@discuss.python.org *log
[~/var/log/mailfiler]fleet2*>

здесь показан grep для идентификатора сообщения второго поста в моих логах, а затем — для идентификатора первого поста, который не отображается.

С наилучшими пожеланиями,
Кэмерон

И ещё один сегодня: Serve HTML from extensionless URLs in http.server - #2 by Rosuav - Ideas - Discussions on Python.org

Совпадение по времени (это и предыдущий случай произошли сегодня утром после периода затишья) заставляет меня задуматься: возможно, дело не в банальной ошибке логики типа «должно ли это отправляться?», а в более широкой проблеме, из-за которой это не работает, например, перезапуск экземпляра Discourse или какая-то другая проблема с ресурсами.

Аналогичный поиск по ID сообщения ответа, а затем по ID сообщения «в ответ на» (ОП):

[~/var/log/mailfiler]fleet2*> agf discourse/post/78998@discuss.python.org *log
main.log
5553805:2022-12-24 08:42:48,500 Level 25 mailfiler: monitor: +spool:   +spool/new/1671831759.M979332P32679Q9.fleet2.l <discourse/post/78998@discuss.python.org>
5553809:2022-12-24 08:42:48,522 Level 25 mailfiler: monitor: +spool-in:   +spool-in/new/1671831768.#6332M514534P789 <discourse/post/78998@discuss.python.org>

spool-in.log
3607754:2022-12-24 08:42:48,522 Level 25   +spool-in/new/1671831768.#6332M514534P789 <discourse/post/78998@discuss.python.org>

spool.log
3244519:2022-12-24 08:42:48,500 Level 25   +spool/new/1671831759.M979332P32679Q9.fleet2.l <discourse/post/78998@discuss.python.org>
[~/var/log/mailfiler]fleet2*> agf discourse/post/78967@discuss.python.org *log
[~/var/log/mailfiler]fleet2*>

С уважением,
Кэмерон

2 лайка

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

Подтверждаю: для вашего пользователя в этой теме нет записи EmailLog для оригинального поста. Пока ничего более заметного не выделяется, однако это очень неприятная ошибка, причина которой сложно определяется.

К сожалению, это действие было рассчитано только на один месяц, и автоматическая система уже отключила его. Я снова включил детальное ведение журналов на три месяца, чтобы посмотреть, появятся ли ещё примеры для Python, которые я смогу проанализировать.

1 лайк