标签: timeout

Polly 没有超时

我试图让 Polly 在 3 秒后超时以及返回某些 http 代码时再次尝试。但是,直到 100 秒后 HttpClient 超时后才会超时。

这是我的代码:

private static Polly.Wrap.AsyncPolicyWrap<HttpResponseMessage> GetPolicy()
{
    var timeoutPolicy = Policy.TimeoutAsync(3, Polly.Timeout.TimeoutStrategy.Optimistic);

    var retryPolicy = Policy
        .Handle<HttpRequestException>()
        .OrResult<HttpResponseMessage>(r =>
            r.StatusCode == HttpStatusCode.TooManyRequests ||
            r.StatusCode == HttpStatusCode.ServiceUnavailable ||
            r.StatusCode == HttpStatusCode.Forbidden)
        .WaitAndRetryAsync(3, i => TimeSpan.FromSeconds(3));

    var policy = retryPolicy.WrapAsync(timeoutPolicy);
    return policy;
}
Run Code Online (Sandbox Code Playgroud)

更新

根据要求,这是我使用该策略的代码。

var pollyResponse = await GetPolicy().ExecuteAndCaptureAsync(() =>
      httpClient.SendAsync(GetMessage(HttpMethod.Delete, endpoint))
);
Run Code Online (Sandbox Code Playgroud)

以及生成 HttpRequestMessage 的辅助方法:

private HttpRequestMessage GetMessage<T>(HttpMethod method, string endpoint, T content)
{
    var message = new HttpRequestMessage
    { …
Run Code Online (Sandbox Code Playgroud)

c# timeout dotnet-httpclient polly retry-logic

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

Discord.py 超时服务器成员

几个月前,我想到了为我朋友的服务器制作一个功能性不和谐机器人的想法。我的朋友问我是否可以发出会员超时命令,所以我开始了我的研究。由于discord.py将不再更新,这个问题可能毫无用处并且浪费时间,但无论如何我真的很想尝试一下。我知道 Stack Overflow 是关于修改代码的,而不是代码编写服务,但我真的不知道应该如何做到这一点。

我的想法是在指定时间内为成员提供“静音”或“超时”角色,并在计时器停止后再次将其删除,但随后我应该使用 while 循环,导致其余代码不再可访问,使用该函数也是如此time.sleep

我在互联网上找不到任何关于此的信息,所以我唯一的希望是 Stack Overflow。我不希望您在答案中编写整个程序,只是在我可能正在寻找的地方,以便我可以自己弄清楚其余的内容。

提前致谢!

python timeout discord.py

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

如何有效管理消息可见性超时?

我们的流程需要 30 秒到 5 分钟不等,具体取决于事件。我们的基本架构如下(python 3.9,boto3将send_message发送到sqs):

  • lambda 函数 A 查找数据库并决定事件
  • 事件被推送到标准 SQS 队列中(VisibilityTimeout:600)
  • lambda 函数 B 由 SQS 队列从点 (2) 触发 - 因为我们希望一次处理一条消息,所以触发器的 BatchSize 设置为 1,函数的 ReserveConcurentExecutions 也设置为 1。函数超时为 600。

VPC和NAT网关已配置。

我们发现,尽管函数调用已提前成功完成,但后续消息始终以 10 分钟为间隔进行处理。我们打算更有效地管理时间,并尝试将消息可见性超时默认缩短为 1 分钟,并在函数 B 执行期间每 30 秒延长 1 分钟(我们使用 boto3 client.change_message_visibility)。看起来它不起作用 - 几乎所有消息最终都会进入我们的死信队列(CloudWatch 日志没有表明任何错误)。

  • 成功执行 lambda 后是否不应该删除消息,导致立即处理下一条消息(我们的基本场景)?
  • 我们在尝试主动管理消息可见性超时时做错了什么?

我们的代码:

  1. 基本代码(在我们尝试优化整个过程的时间之前;至少它的工作方式是所有消息都已成功处理;但是它花费了太多时间,因为消息以 10 分钟的间隔处理,即使有些消息已处理)例如 2 分钟内):有关 SQS 和 lambda 函数 B 的 Template.yaml 摘录:
Globals:
  Function:
    Timeout: 30
    Environment:
      Variables:
        SQS_QUEUE_URL: !Ref SqsQueue
Resources:
  SqsQueue:
    Type: AWS::SQS::Queue
    Properties:
      VisibilityTimeout: …
Run Code Online (Sandbox Code Playgroud)

timeout amazon-sqs amazon-web-services aws-lambda

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

使用 Polly 揭秘 HTTP 超时并重试

注册服务:

var host = new HostBuilder().ConfigureServices(services =>
{
    services.AddHttpClient<Downloader>(client =>
    {
        client.Timeout = TimeSpan.FromSeconds(1); // -- T1
    })
    .AddPolicyHandler(HttpPolicyExtensions
        .HandleTransientHttpError()
        .Or<HttpRequestException>()
        .WaitAndRetryAsync(Backoff.DecorrelatedJitterBackoffV2(
            TimeSpan.FromSeconds(5), // -- T2
            retryCount: 3)))
    .AddPolicyHandler(Policy.TimeoutAsync<HttpResponseMessage>(10)) // -- T3
    .AddPolicyHandler(HttpPolicyExtensions
        .HandleTransientHttpError()
        .CircuitBreakerAsync(5, TimeSpan.FromSeconds(30))); // -- T4

    services.AddTransient<Downloader>();

}).Build();
Run Code Online (Sandbox Code Playgroud)

实施Downloader

class Downloader
{
    private HttpClient _client;
    public Downloader(IHttpClientFactory factory)
    {
        _client = factory.CreateClient();
    }

    public void Download(List<Uri> links)
    {
        await Parallel.ForEachAsync(
            links, 
            async (link, _cancelationToken) =>
            {
                await _client.GetStreamAsync(uri, _cancellationToken);
            });
    }
}
Run Code Online (Sandbox Code Playgroud)

在此伪代码中,我对超时之间的相关性以及如何/何时重新提交 HTTP 请求感到困惑。具体来说: …

c# timeout dotnet-httpclient .net-core polly

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

JavaFX 窗口需要一段时间才能加载并在 Eclipse 中出现错误

当我尝试在 Eclipse 中运行默认的 JavaFX 代码时,窗口需要一段时间才能打开,并且出现以下错误:

com.sun.glass.ui.mac.MacApplication lambda$waitForReactivation$6 警告:等待应用程序重新激活时超时

它在我的 Windows PC 上运行良好,但我只在 Mac 上收到此错误。

直到我取消选中“运行配置”中的 -XstartOnFirstThread 参数后,该窗口才完全打开。但我仍然收到错误。

package application;
    
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;


public class Main extends Application {
    @Override
    public void start(Stage primaryStage) {
        try {
            BorderPane root = new BorderPane();
            Scene scene = new Scene(root,100,100);
            primaryStage.setScene(scene);
            primaryStage.show();
        } catch(Exception e) {
            e.printStackTrace();
        }
    }
    
    public static void main(String[] args) {
        launch(args);
    }
}
Run Code Online (Sandbox Code Playgroud)

eclipse timeout javafx

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

如何强制20分钟的会话超时?

当谈到实际决定会话超时的时候,我很困惑.

在登录(或抛出)用户之前,Web应用程序需要允许20分钟的"空闲时间".我在IIS中的sessionState和Recycle worker进程上尝试了不同的设置.超时仍然太短,就我的原始测试所显示的那样,有点随机.

我在某处读到默认超时是20分钟,但在我的应用程序中它似乎更接近五.有没有简单的方法来改变这个?该应用程序在IIS 6上运行.NET 3.5.

编辑:我刚刚意识到实体框架可能与问题有关,因为用户内容作为实体框架中的上下文保存.实体持有多长时间是否有时间限制?

asp.net iis iis-6 entity-framework timeout

0
推荐指数
2
解决办法
1849
查看次数

PHP连接到nexus.passport.com时超时

我正在用PHP编写MSN客户端.这是我目前的代码:

$socket = fsockopen("messenger.hotmail.com", 1863);
echo '<b>Connected to 1st server.</b><br />';
//Send MSNP version
fputs($socket, "VER 0 MSNP10 CVR0\r\n");
echo fread($socket, 5000) . '<br />';
//Send user-agent
fputs($socket, "CVR 1 0x0409 php ".phpversion()." i386 MSNMSGR 7.0.0000 MSMSGS ".$_POST["username"]."\r\n");
echo fread($socket, 5000) . '<br />';
//Send username
fputs($socket, "USR 2 TWN I ".$_POST["username"]."\r\n");
//Read XFR
$xfr = fread($socket, 5000);
echo $xfr . '<br />';
$xfr = explode(" ", $xfr);

//Connect to second server
$server2 = explode(":", $xfr[3]);
$socket = fsockopen($server2[0], (int)$server2[1]); …
Run Code Online (Sandbox Code Playgroud)

php timeout msn

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

如何在HttpWebRequest.GetRequestStream上设置超时?

我已经设置了HttpWebRequest的 Timeout和ReadWriteTimeout ,并且在尝试连接到不存在的服务器时,GetRequestStream仍然没有超时.在DNS解析被攻击时,我遇到了类似的问题,但这次有问题的服务器在我自己的机器上运行(localhost),所以这不相关.

场景是这样的:

  1. 我举起服务器
  2. 我成功连接到它,执行POST,并关闭请求/响应流
  3. 我杀了服务器
  4. 我尝试再次连接,并期望我将达到我设置的超时

此时线程挂起.我尝试将KeepAlive设置为false,但这没有用.

我想在一个单独的线程中运行上面的场景,如果它需要太长时间自己杀死它 - 但是这个解决方案非常难看并且不会阻止资源泄漏.

.net connection timeout http httpwebrequest

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

.Multithreading net - 实现所选代码而不会被线程中断

SO用户,

我有3个线程在任何给定时间同时运行,麻烦是在线程1尝试通过传递用户名连接到服务器线程2被调用,并且当线程1转动时,服务器关闭它在代码上的连接.

我可以在任何地方实现同时发送用户名和密码,同时线程互相打断吗?

谢谢!,Nidhi

.net c# multithreading timeout

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

如何在SQL Server 2005中有效地操作500k记录?

我从客户那里获得了一个包含500,000个用户更新的更新信息的大文本文件.但是,当我处理此文件时,我经常遇到SQL Server超时错误.

这是我在VB应用程序中遵循的处理数据的过程(通常):

  1. 从临时表中删除所有记录(删除上个月的数据)(例如DELETE * FROM tempTable)
  2. 将文本文件翻录到临时表中
  3. 在临时表中填写额外信息,例如organization_id,user_id,group_code等.
  4. 根据临时表中计算的数据更新实际表中的数据

问题是我经常运行像UPDATE tempTable SET user_id = (SELECT user_id FROM myUsers WHERE external_id = tempTable.external_id这样的命令,这些命令经常超时.我已经尝试将时间超过10分钟,但它们仍然失败.现在,我意识到500k行是不容易操作的行数,但我认为据称能够处理数百万行的数据库应该能够很容易地处理500k.我是如何处理这些数据的?

请帮忙.任何和所有建议欢迎.

timeout sql-server-2005

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