为什么会这样呢?
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)
我怎样才能让它发挥作用?
问题
我一直在寻找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在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对不起代码格式错误.我不知道为什么,但我不能更好地格式化它.我在这里重复了代码:
你会使用哪种分布式锁服务?
要求是:
我对"它可以在数据库上完成"或"它可以在JavaSpaces上完成"等答案不感兴趣 - 我知道.我对一个现成的,开箱即用的,经过验证的实现感兴趣.
你会如何提示用户输入一些信息但是在N秒后超时?
谷歌在http://mail.python.org/pipermail/python-list/2006-January/533215.html上指向了一个关于它的邮件线程,但似乎没有用.超时发生的语句,无论是sys.input.readline还是timer.sleep(),我总是得到:
<type'exception.TypeError'>:[raw_]输入最多需要1个参数,得2
以某种方式,除了没有抓住.
有没有办法为每个服务的服务启动超时设置不同的值?我可以使用ServicesPipeTimeout注册表项更改它,但它是每台计算机(http://support.microsoft.com/kb/824344).
目前,我唯一想到的是在不同的线程中完成所有耗时的启动操作.
我试图从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库执行数百万个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)
注意:实际上我有一些"技巧" - 我可以.getConnectionManager().shutdown()在其他方面安排Thread取消,Future如果请求已正确完成,但它被删除,并且它也杀死了整个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秒内中断连接,无论主机是否响应.
我有一个基于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)
不幸的是我没有访问客户端,所以我只是想确认这可能发生的各种原因,
服务器正在尝试从请求中读取数据,但其占用的时间超过了从客户端到达的数据的超时值.这里的超时通常是tomcat连接器 - > connectionTimeout属性.
客户端具有读取超时设置,并且服务器花费的时间比响应时间长.
我经历过的其中一个线程表示,这可能发生在高并发性和启用了keepalive的情况下.
对于#1,我设置的初始值是20秒,我已经将其提高到60秒,将测试并查看是否有任何更改.
同时,如果你们中的任何一个人能就此提供专家意见,那将非常有帮助.或者就此而言,您可以想到哪个可能导致此问题.
提前致谢.
玉萍