标签: http-status-code-429

当客户端是多线程时,客户端对 HTTP 429 的正确反应是什么?

HTTP 状态代码 429 告诉发出请求的客户端在响应的 Retry-After 标头中指定的时间段后退出并重试请求。

在单线程客户端中,很明显,获取 429 的线程应该按照指示等待,然后重试。但RFC明确指出

本规范没有定义源服务器如何识别用户,也没有定义它如何计算请求。

因此,在多线程客户端中,保守的方法会阻止所有线程发送请求,直到 Retry-After 时间点。但:

  • 许多线程可能已经超过了它们可以记录来自一个被拒绝线程的信息的程度,并且将至少再发送一个请求。
  • 线程之间的全局同步可能很难实现和正确
  • 如果设置不仅运行多个线程而且运行多个客户端,可能在不同的机器上,在一个 429 上回退所有这些变得非常重要。

有没有人有云提供商的服务器如何实际处理这个领域的具体数据?如果我不全局阻止所有线程,它们会立即恶化吗?微软的建议

  1. 等待 Retry-After 字段中指定的秒数。
  2. 重试请求。
  3. 如果请求再次失败并显示 429 错误代码,则您仍然受到限制。继续使用推荐的 Retry-After 延迟并重试请求,直到成功。

它两次说“请求”而不是“任何请求”或“所有请求”,但这是我不确定的法律类型解释。

为了确保这不是一个意见问题,让我尽可能以事实为基础来表述它:

是否有更详细的云 API 规范(微软、谷歌、Facebook、Twitter)然后上面的例子让我做出明智的决定是否需要全局回退或是否足以回退获得的特定请求429?

multithreading http rate-limiting http-status-code-429

5
推荐指数
1
解决办法
768
查看次数

Kibana 在尝试创建索引模式时抛出 429(请求过多)

我有一个elasticsearch索引(仅 150kb),我想在 kibana 中可视化。在进入堆栈管理 > 索引模式 > 生成新索引模式后,会抛出 429(请求过多)错误。这是来自浏览器:

Failed to load resource: http://localhost:5601/api/saved_objects/index-pattern the server responded with a status of 429 (Too Many Requests)
Run Code Online (Sandbox Code Playgroud)

为什么会这样?我关闭了 elasticsearch 和 kibana 并重新打开,但错误仍然存​​在。

indexing elasticsearch kibana http-status-code-429

5
推荐指数
1
解决办法
3486
查看次数

Apache 反向代理更改状态代码

背景

我们一直在 JBoss 上运行一个应用程序,该应用程序通过Apache 反向代理向客户端公开。我们最近引入了“HTTP 429 Too much requests”来减慢高速请求。


问题

然而,apache2似乎将HTTP状态代码从429更改为500。

根本原因分析

  • JBoss 确认它通过绕过代理并直接与其通信来发送 HTTP 429。

  • 从 /var/log/apache2/access.log 确认,apache2 获得 HTTP 429

     10.0.0.161 - - [16/Jul/2014:07:27:47 +0000] "POST /the/URL/ HTTP/1.1" 429 1018 "-" "curl/7.36.0" |0/466110|
    
    Run Code Online (Sandbox Code Playgroud)
  • 不知何故,Curl 客户端得到了 500。

几年前在 Bugzilla #900827 上也提交了一个错误。我记得读到它已在 2.2.18 中修复。然而,我仍然面临这个问题——这让我认为可能存在完全不同的问题。

问题

PS:由于这个问题更多的是关于HTTP状态规范,所以我在这里问。如果社区认为更多的是关于 apache,请随时投票将问题移至服务器故障。

apache proxy curl http-status-code-429

4
推荐指数
1
解决办法
2277
查看次数

Python Geopy Nominatim 请求过多

以下脚本与包含 2 行的文件完美配合,但当我尝试 2500 行文件时,出现 429 个异常。所以,我将查询时间增加到了5秒。我还填写了用户代理。尝试失败后,我连接到 VPN 以更改“新鲜”,但再次收到 429 错误。我在这里缺少什么吗?Nominatim 策略指定每秒连接数不得超过 1 个,我每 5 秒执行一个连接...任何帮助都会有帮助!

from geopy.geocoders import Nominatim
import pandas
from functools import partial

from geopy.extra.rate_limiter import RateLimiter

nom = Nominatim(user_agent="xxx@gmail.com")
geocode = RateLimiter(nom.geocode, min_delay_seconds=5)


df=pandas.read_csv('Book1.csv', engine='python')
df["ALL"] = df['Address'].apply(partial(nom.geocode, timeout=1000, language='en'))
df["Latitude"] = df["ALL"].apply(lambda x: x.latitude if x != None else None)
df["Longitude"] = df["ALL"].apply(lambda x: x.longitude if x != None else None)

writer = pandas.ExcelWriter('Book1.xlsx')
df.to_excel(writer, 'new_sheet')
writer.save()
Run Code Online (Sandbox Code Playgroud)

错误信息:

Traceback (most recent call last):
  File "C:\Users\u6022697\AppData\Local\Programs\Python\Python37\lib\site-packages\geopy\geocoders\base.py", …
Run Code Online (Sandbox Code Playgroud)

python geopy python-3.x nominatim http-status-code-429

3
推荐指数
1
解决办法
1万
查看次数

Twitter API正在返回HTTP 429 - 请求太多

我做了twiiter应用程序,我做了一个从twitter API获取数据的循环它显示错误

[raw] => HTTP/1.1 429 Too Many Requests
[content-type: application/json; charset=utf-8
date: Fri, 29 Mar 2013 20:03:07 UTC
server: tfe
set-cookie: guest_id=v1%3A136458738755627462; Domain=.twitter.com; Path=/; Expires=Sun, 29-Mar-2015 20:03:07 UTC
Run Code Online (Sandbox Code Playgroud)

我该如何解决呢?

twitter https http http-status-code-429

2
推荐指数
1
解决办法
8622
查看次数

/oauth/token Passport 端点的 Laravel 速率限制节流阀

我试图oauth/token在 Laravel 5.8 中禁用 Passport 内置端点的速率限制,我认为只需从 api 中删除油门中间件就可以做到:

'api' => [
    // 'throttle:60,1',
    'bindings',
],
Run Code Online (Sandbox Code Playgroud)

但是,尽管这有效地禁用了我在 api 路由文件中定义的每个端点的速率限制,但它并没有这样做/oauth/token,就好像 Passport 有默认的节流设置一样。所以我只是AppServiceProvider用一个荒谬的数字添加了该路由的油门中间件:

\Route::group(['middleware' => ['custom_provider', 'throttle:999999999,1']], function () {
    Passport::routes();
});
Run Code Online (Sandbox Code Playgroud)

但是当我测试这个时,由于某种原因,在几次请求后我仍然收到 429 错误:

429 Too Many Requests

X-RateLimit-Limit ?9999999999
X-RateLimit-Remaining ?9999999935
x-ratelimit-reset ?1567108098
Run Code Online (Sandbox Code Playgroud)

所以我宁愿完全禁用它。任何想法如何专门为 Passport 路线禁用它?

php rate-limiting laravel http-status-code-429

2
推荐指数
1
解决办法
2073
查看次数

当用户超过每日传输限制时,正确的 HTTP 状态代码是什么?

每个用户都有每日信用额度。

如果用户超出每日限制,HTTP 状态代码将显示在此处。

403 -禁止或 200 -成功(带有验证结果)

c# rest http-status-codes http-status-code-403 http-status-code-429

2
推荐指数
1
解决办法
208
查看次数

仅使用Java访问一次Reddit .json页面时的HTTP 429请求过多

当我尝试使用Java使用.json扩展名访问任何Reddit页面时,收到HTTP 429太多请求响应。

我发现使用Java代码在这里不做任何修改(除更改目标URL)。我正在尝试访问以下URL:

我可以使用浏览器很好地访问这些页面,但是尽管我每次都发出一个请求并在两者之间等待,但无法以编程方式访问它们。一分钟内发出30多个请求时,Reddit返回此消息,但我的请求量远远少于此,并且我的网络上没有其他人使用Reddit。

有谁熟悉这个,为什么我会出现这些错误?是否会有更好的方法使用Java来解决此问题?

java api json reddit http-status-code-429

1
推荐指数
1
解决办法
1617
查看次数

429使用aws-sdk为s3对象生成预签名的URL时,请求过多

我有一个应用程序,它是一个数字资产管理系统。它显示缩略图。我将这些缩略图设置为可与AWS S3预签名URL一起使用:https ://docs.aws.amazon.com/AmazonS3/latest/dev/ShareObjectPreSignedURLJavaSDK.html 。这一段代码有效,直到我更改了通过请求处理的项目数量。该应用程序有25、50、100、200的选项。如果我选​​择100或200,则该过程将失败,并显示“错误:com.amazonaws.AmazonServiceException:请求过多(服务:null;状态代码:429;错误代码:null ;请求ID:null)“

现在的过程如下:执行搜索>通过返回该对象的预签名URL的方法运行每个对象键。

我们通过Elastic Container Service运行此应用程序,该服务允许我们通过ContainerCredentialsProvider提取凭据。

相关代码进行审查:

String s3SignedUrl(String objectKeyUrl) {
    // Environment variables for S3 client.
    String clientRegion = System.getenv("REGION");
    String bucketName = System.getenv("S3_BUCKET");

    try {
        // S3 credentials get pulled in from AWS via ContainerCredentialsProvider.
        AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
                .withRegion(clientRegion)
                .withCredentials(new ContainerCredentialsProvider())
                .build();

        // Set the pre-signed URL to expire after one hour.
        java.util.Date expiration = new java.util.Date();
        long expTimeMillis = expiration.getTime();
        expTimeMillis += 1000 * 60 * 60;
        expiration.setTime(expTimeMillis);

        // Generate the presigned …
Run Code Online (Sandbox Code Playgroud)

java amazon-s3 amazon-web-services aws-sdk http-status-code-429

1
推荐指数
1
解决办法
345
查看次数