如果由于临时过载而我想礼貌地拒绝网站上的服务,则HTTP响应503服务不可用似乎是合适的.该规范提到使用503 发送Retry-after标头.
有什么意义吗?Retry-after会影响任何事情吗?浏览器是否关注它?
是否可以使用requestsPython库限制GET请求的下载速率?例如,使用如下命令:
r = requests.get('https://stackoverflow.com/')
...是否可以限制下载速率?我希望有类似这个wget命令的东西:
wget --limit-rate=20k https://stackoverflow.com/
我知道这是可能的urllib2.我是专门询问requests图书馆的.
我使用 Polly 来处理一些场景,例如请求限制和超时。这些策略直接添加到 Startup.cs 中,如下所示:
var retries = //applying the retries, let say I set to 25 times with 10s delay. Total 250s.
serviceCollection
    .AddHttpClient<IApplicationApi, ApplicationApi>()
    .AddPolicyHandler((services, request) => GetRetryPolicy<ApplicationApi>(retries, services));
政策:
static IAsyncPolicy<HttpResponseMessage> GetRetryPolicy<T>(List<TimeSpan> retries, IServiceProvider services)
{
    return HttpPolicyExtensions
        .HandleTransientHttpError()
        .OrResult(msg => msg.StatusCode == System.Net.HttpStatusCode.TooManyRequests)
        .WaitAndRetryAsync(retries,
            onRetry: (outcome, timespan, retryAttempt, context) =>
            {
                //do some logging
            }
}
在 ApplicationApi.cs 中执行如下操作:
private readonly HttpClient _httpClient;
public ApplicationApi(HttpClient httpClient)
{
    _httpClient = httpClient;
}
       
public void CallApi()
{ 
      var …