# 如何将导入分散到更长时间以防止遇到外部服务的速率限制

**URL:** <https://meta.discourse.org/t/how-to-spread-out-import-over-longer-timer-to-prevent-running-into-rate-limits-of-external-services/285186>\
**Category:** Migration\
**Created:** [2023年十一月11日 15:07 UTC](https://meta.discourse.org/t/how-to-spread-out-import-over-longer-timer-to-prevent-running-into-rate-limits-of-external-services/285186 "2023-11-11T15:07:11Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![winston-yallow](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/winston-yallow/32/339990_2.png) [@winston-yallow](https://meta.discourse.org/u/winston-yallow)\
**Post date:** [2023年十一月11日 15:07 UTC](https://meta.discourse.org/t/how-to-spread-out-import-over-longer-timer-to-prevent-running-into-rate-limits-of-external-services/285186/1 "2023-11-11T15:07:11Z")

</div>

背景故事：[Imgur images not rendering because server is rate limited](https://meta.discourse.org/t/markdown-image-embed-is-not-rendered-correctly/285179)

我已经有一个用 Ruby 编写的自定义导入脚本。它工作正常，可以添加所有主题，但速度太快了。这会导致服务器在烘焙帖子时从 imgur 等外部服务获取大量图像。

有什么最好的方法可以减慢速度？我的意思是，最简单的方法是在帖子之间让导入过程稍作休眠。但这会导致脚本运行时间过长（考虑到图像数量和 imgur 的速率限制，大约需要 3 天）。有没有其他方法，比如一次性导入所有主题，但告诉 discourse 每分钟只烘焙特定数量的帖子？这样主题会立即创建，但 html 是异步构建的。

---

<div class="post-metadata">

**Author:** ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)\
**Post date:** [2023年十一月12日 13:39 UTC](https://meta.discourse.org/t/how-to-spread-out-import-over-longer-timer-to-prevent-running-into-rate-limits-of-external-services/285186/2 "2023-11-12T13:39:49Z")

</div>

稍后可以重新烘焙帖子。每隔几天可以重新烘焙不好的帖子。

---

<div class="post-metadata">

**Author:** ![winston-yallow](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/winston-yallow/32/339990_2.png) [@winston-yallow](https://meta.discourse.org/u/winston-yallow)\
**Post date:** [2023年十一月12日 16:17 UTC](https://meta.discourse.org/t/how-to-spread-out-import-over-longer-timer-to-prevent-running-into-rate-limits-of-external-services/285186/3 "2023-11-12T16:17:47Z")

</div>

有什么方法可以找到有问题的帖子，以便我能专门重建它们？我知道可以通过 rake 重建所有帖子。但这将始终从相同的帖子开始，并在到达有问题的帖子之前达到速率限制。

---

<div class="post-metadata">

**Author:** ![winston-yallow](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/winston-yallow/32/339990_2.png) [@winston-yallow](https://meta.discourse.org/u/winston-yallow)\
**Post date:** [2023年十一月12日 21:20 UTC](https://meta.discourse.org/t/how-to-spread-out-import-over-longer-timer-to-prevent-running-into-rate-limits-of-external-services/285186/4 "2023-11-12T21:20:40Z")

</div>

经过进一步测试，我确实需要从一开始就避免达到速率限制。由于嵌入了大量图片，IP 地址似乎会被列入黑名单至少几天（我在这台机器上烘焙已经 4 天了，但它仍然被列入黑名单）。因此，我无法稍后重新烘焙帖子。

有什么方法可以从一开始就将烘焙分散到更长的时间范围内吗？
