摘要邮件未发送给所有用户——需要帮助调试

@Canapin 我们也没有看到任何文档指出此设置与电子邮件相关……不过,很高兴知道它在哪里 @Heliosurge 感谢您指出这一点。

又一天过去了,没有任何摘要被创建。我们在过去 24 小时内发布了一个新主题来触发一些操作,但什么都没有……

大家还有其他想法吗?我们是否遗漏了某个日志?是否有我们能看到并纠正的失败之处?

考虑到这一点,我们假设问题与系统中的用户数量有关。奇怪的是,自迁移到 Discourse 以来,这个数字并没有增加超过 10。

我们大约有:

  • 100 万活跃用户
  • 240 万已停用用户

也许系统在执行此查找时会出现某种奇怪的超时?如果失败,我们会在哪里看到输出?

同样,这似乎很奇怪,因为消化邮件(digest)发送正常,至少在一两周前是这样,尽管数量有限。

1 个赞

也许,或者其他原因导致摘要为空,因此未发送给用户。

我不知道摘要是如何生成的。我不知道它是否考虑了用户忽略的类别,或者类似的东西。

我猜如果通过 rails 控制台手动发送摘要,您的用户将收不到摘要?

user = User.find_by(username: 'user-name')
Jobs.enqueue(:user_email, type: :digest, user_id: user.id)

运行此命令几秒钟后,您应该会看到 Sidekiq 已处理的作业增加了 1,但如果您的论坛很大,任何时候都可能有大量 Sidekiq 作业,因此可能很难看到它是否增加了。
您可以使用实时轮询按钮实时查看:

根据我的测试,如果我运行 rails 脚本向用户发送摘要,但摘要为空:

  • 因为用户之前已收到
  • 或在其个人资料中禁用了电子邮件摘要
  • 等等…

然后 Sidekiq 已处理的作业数量会增加一,但不会发送电子邮件,并且 /admin/email/sent 中不会有新条目。

也许您可以记录已处理的 Sidekiq 作业,看看其中是否有任何线索。我搜索了一下,但不确定它是否默认记录了已处理的作业。

我认为有一个合乎逻辑、合理的解释,说明为什么用户收不到摘要。作业可能已处理,但摘要可能为空,这可以解释为什么没有它的痕迹。
我会再次仔细检查所有相关用户的设置、他们的通知级别、他们跟踪的类别等等。

1 个赞

在摘要发送机制中添加调试输出会相当容易。
你是否有一个预发布站点,可以在不影响你的生产环境的情况下进行测试?

在那里,可以测试例如查询是否发生超时。基于直觉,我会预计超时会在日志中被看到。

此外,可以增强构建目标人群的查询,加入统计输出。

所有这些在沙箱环境中都不难,但在生产环境中可能会有一定的风险。

2 个赞

继续: