增加RunAsync的超时

时间:2016-07-28 11:11:45

标签: azure-service-fabric

我在状态服务上的RunAsync方法中创建了许多Service Bus客户端。

该方法花费的时间超过了在开发环境中运行时允许的4秒,并且应用程序无法启动。

它因为我的开发机器和Azure之间的延迟似乎失败了。

我在泰国。 Azure位于美国中南部。

我的开发箱可以在本地增加4000毫秒的超时吗?

我得到的错误是:

$opts = [
    'http' => [
            'method' => 'POST',
            'headers' => ['Authorization' => 'Bearer ' . $this->username . ':' . $computedHash]
    ]
];
$context = stream_context_create($opts);
$file = file_get_contents('http://www.hook.io/example/', false, $context);

}    }

1 个答案:

答案 0 :(得分:4)

问题不在于RunAsync运行时间太长,而且取消需要很长时间。

Service Fabric有一个默认(硬编码)超时4秒报告"慢"取消。这只意味着在那之后它将产生一个健康事件(在升级期间可能很重要,因为它会影响整个应用程序的健康状态)。

真正的问题是RunAsync的实施。当您删除服务或升级服务时,Service Fabric将等待(可能永远)它正常关闭。您的代码应该尊重传递给CancellationToken方法的RunAsync。例如,如果您有多个IO操作,请在每个操作之后调用cancellationToken.ThrowIfCancellationRequested()(如果可能)并将其传递给任何接受它作为参数的方法。