alxpck
(Alex Peck)
1
您希望完成什么工作?
我们有一个自定义主题组件(“传记书”),最近开始返回 429 错误。这一问题始于 11 月 26 日,在此之前一切正常。
“传记书”通过修改 /u 路由以更美观的方式展示用户信息。为此,它还会从每位用户的 .json 文件中请求额外的用户信息。“传记书”原本采用懒加载以避免 429 错误,但四天前这一机制失效了。我不确定四天前发生了什么,但 Discourse 团队已确认速率限制方面并未进行任何更改。
相关代码仓库地址为:GitHub - sethgodin/discourse_biobook: Bio Book feature for Discourse
最初为我们开发该组件的开发者目前无法接手此修复工作,因此我们需要有人能够介入现有代码,解决相关错误,使自定义主题组件恢复正常运行。
我们不需要新增功能,无需更改现有功能,也不希望进行任何重构。我们只需解决 429 错误,让“传记书”恢复其原有功能。
您希望何时完成?
我们希望于 2020 年 1 月 6 日(星期一)前完成。
您能为此任务提供的预算是多少(美元)?
我们的预算为 250 美元,用于解决 429 错误。
我们理解,解决 429 错误即可修复所有相关问题。如果情况并非如此,请告知我们,我们将相应调整预算。
1 个赞
alxpck
(Alex Peck)
3
我们由 Discourse 托管,使用的是商业版计划。
我猜是这样,但不确定。我该如何确认?
1 个赞
RGJ
(Richard - Communiteq)
4
因此,它是以每组 50 名用户的方式进行延迟加载,而 max_reqs_per_ip_per_10_seconds 的默认值也设置为 50。包括主页面在内,这段代码将在 10 秒内发出至少 51 个请求,从而超过了速率限制。
换句话说:我不明白这之前是如何起作用的……?
3 个赞
pfaffman
(Jay Pfaffman)
5
那么一切运行正常。这太遗憾了。如果是配置问题,修复起来会比理查德描述的情况容易得多。
alxpck
(Alex Peck)
6
我也不太确定是怎么回事,但它已经正常运行了一年多。直到四天前,我们从未遇到过 429 错误。
sam
(Sam Saffron)
7
我们上周已在全球范围内为所有 Discourse 实例启用了速率限制。下周我们可以调查该插件,看看是否有更合理的批量 API 可供其使用。
6 个赞
li-zi
9
哇,我最近也因为类似的原因遇到了同样的问题(拉取用户信息来显示卡片!),临时实现了一个小 hack 来解决,然后特意来到论坛,想看看是否有我不知道的批量 API,或者学习如何实现这样的接口。
1 个赞
alxpck
(Alex Peck)
10
@sam 啊……这真是个好消息。非常感谢你提供的背景信息!
1 个赞
HAWK
(Hawk)
11
抱歉,Alex,我上周的回答有误。我没意识到我们之前并没有部署那个更改。
4 个赞
alxpck
(Alex Peck)
12
一切顺利,@HAWK,感谢你的反馈。
在收到 @sam 和团队关于是否有更合适的批量 API 可替代的回复之前,我将暂时搁置这个项目。
谢谢大家。
1 个赞
sam
(Sam Saffron)
13
嗨 Alex,
我刚查看了主题组件。它确实引入了大量工作和海量的需求。我们实施的速率限制在这里完全正确,就像免疫系统一样。
我们会解决这个问题,但可能需要一到两周才能全部完成。
在我看来,这里的关键在于你需要目录开始返回用户卡片所拥有的所有信息。棘手的是,主题组件无法修改服务器,因此我们需要对核心 API 进行一些更改,使我们能够一次性获取多个人的用户卡片信息。
随着进展,我们会及时更新你。关于预算,我们这次将免费处理,但我估计修复这个问题大约需要 2 天的工作量,这远远超出了最初的预算。表面上看起来简单,但实际上需要非常复杂的内部改动。
8 个赞
alxpck
(Alex Peck)
14
感谢 @sam 和团队,这非常有帮助。核心 API 的变更肯定将造福我们,我想也会惠及 Discourse 的其他用户。很高兴我们将能够使用 Bio Book,并使其运行得更加合理。一两周的时间对我们来说没问题。
我理解您关于初始预算和修复范围的说法。您能免费提供这项服务,真是太慷慨了。谢谢。
我们会等待进一步的消息。
4 个赞
system
(system)
关闭
15
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.