YouTube 嵌入缺失

I have a client for whom embedded youtube videos are missing. They appear in composer’s preview, but when the messages are saved, they disappear. They are working fine in try.discourse.org. I tried whitelisting youtu.be and changing the URL to a youtube.com url too. Neither solved the problem.

The site is running v1.6.0.beta11 +141

2 个赞

Have you tried reaching YouTube from your client’s server?

3 个赞

It seems that the problem was that recent Discourse updates have caused my DOI resolver plugin to muck things up. (I disabled a couple other things too, but it was definitely some plugin. . . )

1 个赞

有人在重新烘焙帖子时遇到 youtube.com 返回 429 请求过多错误的问题吗?

[1] pry(main)> posts = Post.where("raw like '%youtube%'").count
=> 5237

:thinking:

3 个赞

我也遇到过这个问题,这应该是一个临时的 IP 封禁(我相信是 1 小时),在此期间,所有重新生成的帖子中的 YouTube 内嵌框都会失败。

或许应该实施某种机制,限制每小时对 YouTube 的请求次数不超过 x 次,以防止重新生成时出现问题?

4 个赞

最近,在对我的 Discourse 安装进行一系列更改和升级后,还剩下两个问题未解决。一个是无法重建数据容器,我正在尝试解决;另一个是除了 YouTube URL 外,所有一一 box 都能正常工作。

在服务器和容器内部,我可以使用 CURL 访问 YouTube。我该如何确认这是否是由于临时 IP 封禁导致的?

编辑:可以确认,无论是重建(App)还是重新生成(Rebake)都不会影响此问题。

编辑 2:通过搜索,我看到 @jomaxro这里 评论说 CloudFlare 之类的内容会影响 Onebox……CDN 会影响单个 Onebox 吗?我尝试将其设置为开发模式,但没有变化。

编辑 3:尝试移除所有插件,但没有任何变化。(此外,由于进程似乎相互干扰,我无法执行重新生成操作。)

编辑 4:尝试了 @Overgrow 的命令,是的,确实 我遇到了问题

[1] pry(main)> posts = Post.where("raw like '%youtube%'").count
=> 72674

我很难运行重新生成命令,因为我的容器报出了以下错误:

PG::UnableToSend: no connection to the server

PG::ConnectionBad: PQconsumeInput() SSL SYSCALL error: EOF detected

我需要停止某些服务吗?

3 个赞

一种方法可能是简单地通过模式匹配重新烘焙,并设置一个延迟。

类似:

rake posts:rebake_match["%youtube%",regex,10]

我的主要问题是无法运行该命令 :sweat:

1 个赞

这或许可以缓慢地重新生成:Post.where("raw like '%youtube%'").where("cooked NOT LIKE '%lazyYT%'").update_all(baked_version: nil)

6 个赞

首先,非常感谢你抽出时间帮助我 @riking

我运行了该命令,得到了我推测是缺失帖子数量的结果:22462。根据命令的最后部分,是否可以安全地认为它正在后台运行?

1 个赞

是的,有一个每 15 分钟运行一次的作业,会重新处理 SiteSetting.rebake_old_posts_count 所指定的帖子。

4 个赞

想问一个问题,无论过了多久,这个数字都不会减少。有没有办法让我跟进或强制执行那个任务?

嗯,可能我搞错了 :thinking: 这个的结果是什么?Post.where("raw like '%youtube%'").where("cooked LIKE '%lazyYT%'").count

3 个赞

当前状态:

旧命令:

[2] pry(main)> Post.where("raw like '%youtube%'").where("cooked NOT LIKE '%lazyYT%'").update_all(baked_version: nil)
=> 23257

新命令:

[1] pry(main)> Post.where("raw like '%youtube%'").where("cooked LIKE '%lazyYT%'").count
=> 49458

编辑:过了一段时间后,我可以确认第二个命令的结果保持静态(数值不变),而第一个命令的结果持续增加。

1 个赞

匹配帖子中的字符串并不需要使用正则表达式。简单的字符串搜索就足以匹配 youtube(例如)。在此示例中,每个包含字符串 youtube 的帖子都将被重新烘焙,每 100 秒处理一个(非常慢……)

Screen Shot 2020-05-26 at 11.23.06 AM

大约过去了 100 秒:

Screen Shot 2020-05-26 at 11.25.35 AM

我会让它继续运行,估计大约 76,200 秒后(上下浮动),这个 rake 任务就会完成 :slight_smile:

看来我应该把这个示例的延迟设置为 10 秒 :slight_smile:

2 个赞

非常感谢 @neounix

试过了,但不幸的是没有成功。

我开始觉得可能和 networking 有关?

抱歉 @iceman

作为一个有点极客的人,我不太明白“没有成功”具体指什么 :slight_smile:(技术信息不够详细)

你的意思是运行 rake 命令时出现了 Rails 错误吗?

如果是这样,请贴出完整的 Rails 错误信息。

或者,Rails 任务是否执行成功?如果成功了,根据 rake 任务统计有多少帖子被重新烘焙(rebaked)?

谢谢。

例如,我的一个小型(非常慢,延迟 100 秒)的重新烘焙任务示例(针对此主题)已经运行了好几个小时:

Screen Shot 2020-05-26 at 5.09.07 PM

目前进度为 209/762 总数……

你的重新烘焙任务进度是多少?

2 个赞

请原谅我之前的信息有误!

我的意思是,我先在一个小样本上运行了一次,然后重新运行,但数字没有变化。

例如:我运行了命令,当时有 76,000 篇帖子,处理了 200 篇后停止;再次运行后,新数字变成了 76,200(也许我的用户在此期间添加了 400 篇包含 YouTube 的帖子……但我不确定)。

现在我再次运行以观察进展,但这可能需要几天时间 :P(目前已有 76,500 次访问……)

由于其他人没有遇到此问题,我正在尝试思考我的变量,基本上包括:

  • 更换了机器(所以这 可能 是 YouTube 的速率限制?)
  • 在新安装上恢复了 Discourse 备份(这 不应该 相关,但到了这一步,我几乎在押注所有可能变动因素)
  • 双容器安装(原以为数据重建有问题,但 多亏了这条信息 来自 @Falco,我现在知道这是“正常”的)
  • 按照这里的 CDN 教程在其上部署了 CloudFlare。
1 个赞

[quote=“Iceman, post:19, topic:47718”]
德语原文:我运行了该命令,当时我有 76000 篇帖子。它处理了 200 篇后停止,接着又运行了一次,新的数量变成了 76200(是的,也许我的用户在此期间添加了 400 篇包含 YouTube 的帖子……但……我不确定)。[/quote]

抱歉我有点愚钝 :slight_smile: 您的意思是您正在运行这个 rake 任务吗?

rake posts:rebake_match['youtube',string,10]

准确写出您输入和看到的内容非常重要。

您运行的确切 rake 任务是什么?使用了哪些参数?

当您运行该 rake 任务时,任务开始重新烘焙(rebake)后的前几行输出是什么?

请提供详细信息、截图、从命令行复制粘贴的内容等。

2 个赞

抱歉,@neounix,您完全正确。

让我重新表述一下:

我运行了以下命令:

root@cont-web-only:/var/www/discourse# time rake posts:rebake_match['youtube',string]
        76597 / 76594 (100.0%)-
    76597 篇帖子处理完成!

然后我想:“好吧,显然你需要添加计时器,否则我们无法测试‘速率限制理论’”,于是我尝试了您发布的那个命令:

root@cont-web-only:/var/www/discourse# time rake posts:rebake_match['youtube',string,100]
            216 / 76594 (0.2%)-

我随即停止它,去检查是否有变化。似乎没有任何变化,于是我心想:“好吧,让我再运行一次,看看情况如何”:

root@cont-web-only:/var/www/discourse# time rake posts:rebake_match['youtube',string,100]
           116 / 76598 (0.2%)-

这个命令正在运行中。所以我的论点是,在使用另一个 rebake 时,帖子总数并没有减少。(我可能是错的,甚至很可能确实是错的,我的这个逻辑可能有问题)。

1 个赞