标签: timeout

执行带超时的shell函数

为什么会这样呢?

timeout 10s echo "foo bar" # foo bar
Run Code Online (Sandbox Code Playgroud)

但这不会

function echoFooBar {
  echo "foo bar"
}

echoFooBar # foo bar

timeout 10s echoFooBar # timeout: failed to run command `echoFooBar': No such file or directory
Run Code Online (Sandbox Code Playgroud)

我怎样才能让它发挥作用?

bash shell timeout function

57
推荐指数
6
解决办法
7万
查看次数

Express.js响应超时

问题

我一直在寻找Express.js的请求/响应超时,但一切似乎都与连接有关,而不是请求/响应本身.

如果请求需要很长时间,则应该超时.显然这不应该发生,但即使是一个简单的错误,因为如果没有调用回调或不使用路由处理程序res.send(),浏览器将一直等待回复.

空路由处理程序就是一个很好的例子.

app.get('/sessions/', function(req, res, callback){});
Run Code Online (Sandbox Code Playgroud)

固定

之前 我添加了以下内容app.use(app,router);,它似乎添加了超时功能.有没有人对此有任何经验/意见?

app.use(function(req, res, next){
    res.setTimeout(120000, function(){
        console.log('Request has timed out.');
            res.send(408);
        });

    next();
});
Run Code Online (Sandbox Code Playgroud)

请注意,我已将超时设置为2分钟.

timeout response settimeout node.js express

57
推荐指数
4
解决办法
9万
查看次数

AngularJS.调用angular-ui模态时清除$ timeout

$timeout在Modal控制器中有几个表达式

App.controller('ModalCtrl', function ($scope, $timeout) {
    for (var i = 0; i < 10; i++) {
        (function () {
            var timer = $timeout(function () {
                console.log('timer')
            }, 1000);
        })()
    }
})
Run Code Online (Sandbox Code Playgroud)

我需要在调用模态时清除所有计时器:

App.controller('MainCtrl', function ($scope, $modal, $timeout) {
    $scope.showMap = function () {
        var modal = $modal.open({
            templateUrl: 'modalap.html',
            controller: 'modalCtrl',
        })

        modal.result.then(function () { //fires when modal is resolving
        }, function () { //fires when modal is invoking
        });
    } })
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

PS对不起代码格式错误.我不知道为什么,但我不能更好地格式化它.我在这里重复了代码:

timeout angularjs angular-ui

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

分布式锁服务

你会使用哪种分布式锁服务?

要求是:

  1. 可以从不同的进程/机器中看到的互斥(锁定)
  2. 锁...释放语义
  3. 在某个超时后自动锁定释放 - 如果锁定持有者死亡,它将在X秒后自动释放
  4. Java实现
  5. 很高兴:.Net实施
  6. 如果它是免费的:死锁检测/缓解
  7. 易于部署,请参阅下面的说明.

我对"它可以在数据库上完成"或"它可以在JavaSpaces上完成"等答案不感兴趣 - 我知道.我对一个现成的,开箱即用的,经过验证的实现感兴趣.

java timeout locking distributed-lock

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

键盘输入在Python中超时

你会如何提示用户输入一些信息但是在N秒后超时?

谷歌在http://mail.python.org/pipermail/python-list/2006-January/533215.html上指向了一个关于它的邮件线程,但似乎没有用.超时发生的语句,无论是sys.input.readline还是timer.sleep(),我总是得到:

<type'exception.TypeError'>:[raw_]输入最多需要1个参数,得2

以某种方式,除了没有抓住.

python timeout keyboard-input

53
推荐指数
8
解决办法
7万
查看次数

Windows服务启动超时

有没有办法为每个服务的服务启动超时设置不同的值?我可以使用ServicesPipeTimeout注册表项更改它,但它是每台计算机(http://support.microsoft.com/kb/824344).

目前,我唯一想到的是在不同的线程中完成所有耗时的启动操作.

windows-services timeout startup

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

Java URLConnection超时

我试图从HTTP URL解析XML文件.如果XML提取时间超过此时间,我想配置15秒的超时,我想报告超时.出于某种原因,setConnectTimeout和setReadTimeout不起作用.这是代码:

          URL url = new URL("http://www.myurl.com/sample.xml");
          URLConnection urlConn = url.openConnection();
          urlConn.setConnectTimeout(15000);
          urlConn.setReadTimeout(15000);
          urlConn.setAllowUserInteraction(false);         
          urlConn.setDoOutput(true);

          InputStream inStream = urlConn.getInputStream();
          InputSource input = new InputSource(inStream);
Run Code Online (Sandbox Code Playgroud)

我正在捕捉SocketTimeoutException.

谢谢克里斯

java timeout urlconnection connect

52
推荐指数
4
解决办法
11万
查看次数

如何防止Java中的SocketInputStream.socketRead0挂起?

使用不同的Java库执行数百万个HTTP请求会让我挂起线程:

java.net.SocketInputStream.socketRead0()

哪个是native功能.

我试图设置Apche Http Client,并且RequestConfig(我希望)有一些可能的超时,但我仍然(可能无限)挂起socketRead0.如何摆脱它们?

挂起比率约为每10000个请求约1个(到10000个不同的主机)并且它可能永远持续(我已确认线程挂起仍然有效,10小时后仍然有效).

Windows 7上的JDK 1.8.

我的HttpClient工厂:

SocketConfig socketConfig = SocketConfig.custom()
            .setSoKeepAlive(false)
            .setSoLinger(1)
            .setSoReuseAddress(true)
            .setSoTimeout(5000)
            .setTcpNoDelay(true).build();

    HttpClientBuilder builder = HttpClientBuilder.create();
    builder.disableAutomaticRetries();
    builder.disableContentCompression();
    builder.disableCookieManagement();
    builder.disableRedirectHandling();
    builder.setConnectionReuseStrategy(new NoConnectionReuseStrategy());
    builder.setDefaultSocketConfig(socketConfig);

    return HttpClientBuilder.create().build();
Run Code Online (Sandbox Code Playgroud)

我的RequestConfig工厂:

    HttpGet request = new HttpGet(url);

    RequestConfig config = RequestConfig.custom()
            .setCircularRedirectsAllowed(false)
            .setConnectionRequestTimeout(8000)
            .setConnectTimeout(4000)
            .setMaxRedirects(1)
            .setRedirectsEnabled(true)
            .setSocketTimeout(5000)
            .setStaleConnectionCheckEnabled(true).build();
    request.setConfig(config);

    return new HttpGet(url);
Run Code Online (Sandbox Code Playgroud)

OpenJDK socketRead0源码

注意:实际上我有一些"技巧" - 我可以.getConnectionManager().shutdown()在其他方面安排Thread取消,Future如果请求已正确完成,但它被删除,并且它也杀死了整个HttpClient,而不仅仅是单个请求.

java sockets timeout http apache-httpclient-4.x

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

Apache HttpClient超时

有没有办法为整个执行指定超时HttpClient

我尝试过以下方法:

httpClient.getParams().setParameter("http.socket.timeout", timeout * 1000);
httpClient.getParams().setParameter("http.connection.timeout", timeout * 1000);
httpClient.getParams().setParameter("http.connection-manager.timeout", new Long(timeout * 1000));
httpClient.getParams().setParameter("http.protocol.head-body-timeout", timeout * 1000);
Run Code Online (Sandbox Code Playgroud)

它实际上工作正常,除非远程主机发回数据 - 即使在一个字节/秒 - 它将继续永远读取!但我想在10秒内中断连接,无论主机是否响应.

java timeout apache-httpclient-4.x

50
推荐指数
4
解决办法
6万
查看次数

java.net.SocketTimeoutException:读取tomcat下的超时时间

我有一个基于tomcat的Web应用程序.我间歇性地得到以下异常,

Caused by: java.net.SocketTimeoutException: Read timed out
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.read(SocketInputStream.java:150)
    at java.net.SocketInputStream.read(SocketInputStream.java:121)
    at org.apache.coyote.http11.InternalInputBuffer.fill(InternalInputBuffer.java:532)
    at org.apache.coyote.http11.InternalInputBuffer.fill(InternalInputBuffer.java:501)
    at org.apache.coyote.http11.InternalInputBuffer$InputStreamInputBuffer.doRead(InternalInputBuffer.java:563)
    at org.apache.coyote.http11.filters.IdentityInputFilter.doRead(IdentityInputFilter.java:124)
    at org.apache.coyote.http11.AbstractInputBuffer.doRead(AbstractInputBuffer.java:346)
    at org.apache.coyote.Request.doRead(Request.java:422)
    at org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:290)
    at org.apache.tomcat.util.buf.ByteChunk.substract(ByteChunk.java:431)
    at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:315)
    at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:200)
    at java.nio.channels.Channels$ReadableByteChannelImpl.read(Channels.java:385)
Run Code Online (Sandbox Code Playgroud)

不幸的是我没有访问客户端,所以我只是想确认这可能发生的各种原因,

  1. 服务器正在尝试从请求中读取数据,但其占用的时间超过了从客户端到达的数据的超时值.这里的超时通常是tomcat连接器 - > connectionTimeout属性.

  2. 客户端具有读取超时设置,并且服务器花费的时间比响应时间长.

  3. 我经历过的其中一个线程表示,这可能发生在高并发性和启用了keepalive的情况下.

对于#1,我设置的初始值是20秒,我已经将其提高到60秒,将测试并查看是否有任何更改.

同时,如果你们中的任何一个人能就此提供专家意见,那将非常有帮助.或者就此而言,您可以想到哪个可能导致此问题.

提前致谢.

玉萍

java sockets tomcat timeout socket-timeout-exception

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