我在网上找了一些SO讨论和ActiveState配方来运行一些超时的代码.看起来有一些常见的方法:
join使用超时.如果超时已超时 - 终止该线程.这在Python(使用的私有_Thread__stop函数)中不是直接支持的,所以这是不好的做法signal.SIGALRM- 但这种方法不适用于Windows!那么,正确的方法是什么?我不是在询问有关变通方法(例如使用Twisted和async IO),而是解决实际问题的实际方法 - 我有一些功能,我想只运行一些超时.如果超时,我想要控制回来.我希望它能在Linux和Windows上运行.
我在我们的生产网站上看到这个以及我设置的一个小测试网站来测试这个...
基本上,似乎mvc处理的请求永远不会超时.我在web.config中设置了executionTimeout并关闭了调试模式.然后我为常规的aspx页面和mvc页面添加了一个无限循环的thread.sleeps(循环在mvc页面的控制器中).aspx页面可靠地超时(HttpException(0x80004005):Request time out out.),但是mvc页面只是永远旋转而没有超时.
是否有单独的mvc设置(我看过但没有找到它们)?默认情况下mvc请求是否超时?
任何有关这方面的帮助将不胜感激.我很乐意通过电子邮件发送我的小型测试网站,如果它可以帮助任何人.
编辑:我正在使用MVC3.
我的web.config的内容:
<?xml version="1.0"?>
<!--
For more information on how to configure your ASP.NET application, please visit
http://go.microsoft.com/fwlink/?LinkId=169433
-->
<configuration>
<connectionStrings>
<add name="ApplicationServices"
connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true"
providerName="System.Data.SqlClient" />
</connectionStrings>
<appSettings>
<add key="webpages:Enabled" value="true" />
</appSettings>
<system.web>
<httpRuntime maxRequestLength="16384" executionTimeout="30" />
<compilation debug="false" targetFramework="4.0">
<assemblies>
<add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, …Run Code Online (Sandbox Code Playgroud) 我使用curl来执行这样的HTTP请求:
$ch = curl_init();
$timeout = 5;
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
$data = curl_exec($ch);
curl_close($ch);
Run Code Online (Sandbox Code Playgroud)
如何检查是否发生错误,以及是否为超时错误?
我想用Javascript进行秒倒计时.
这是我的HTML
<div id="ban_container" class="error center">Please wait
<span id="ban_countdown" style="font-weight:bold">
45</span>
seconds before trying again
</div>
Run Code Online (Sandbox Code Playgroud)
我的JS:
<script type="text/javascript">
var seconds = <?php echo $user->getBlockExpiryRemaining(); ?>;
function countdown(element) {
var el = document.getElementById(element);
if (seconds === 0) {
document.getElementById("ban_container").innerHTML = "done";
return;
}
else {
el.innerHTML = seconds;
seconds--;
setTimeout(countdown(element), 1000);
}
}
countdown('ban_countdown');
</script>
Run Code Online (Sandbox Code Playgroud)
但是由于某种原因,它不会等待超时时间,而是立即执行countdown,这样当我刷新页面时它就会立即显示"完成".我知道它实际上是多次被执行,因为如果我这样做,innerHTML += seconds + " ";它会从45开始倒数.为什么超时会被超时?
我有一个小的jquery片段,它在屏幕顶部显示通知消息,以响应页面上的用户操作.通常在Ajax操作之后显示通知,其中包含动态内容.
例如:
$("#mini-txt").html("Thank you!");
$("#mini").fadeIn("fast");
setTimeout(function() {$("#mini").animate({height: "hide", opacity: "hide"}, "medium");}, 3000);
Run Code Online (Sandbox Code Playgroud)
通知效果很好,除非用户快速连续执行两个或更多操作,在这种情况下,TimeOut函数会自行混淆,第二个消息似乎在前3000毫秒内.
如果执行新操作,是否有办法"杀死"先前的通知.我对动作/选择器没有问题,只是TimeOut函数....要么停止它,要么以某种方式覆盖它.或者也许有更好的选择让消息在屏幕上停留几秒钟然后消失?
谢谢.
我使用Elasticsearch-1.1.0来索引推文.索引过程没问题.然后我升级了版本.现在我使用Elasticsearch-1.3.2,我随机收到这条消息:
Exception happened: Error raised when there was an exception while talking to ES.
ConnectionError(HTTPConnectionPool(host='127.0.0.1', port=8001): Read timed out. (read timeout=10)) caused by: ReadTimeoutError(HTTPConnectionPool(host='127.0.0.1', port=8001): Read timed out. (read timeout=10)).
Run Code Online (Sandbox Code Playgroud)
随机快照:
Happened --33s-- Happened --27s-- Happened --22s-- Happened --10s-- Happened --39s-- Happened --25s-- Happened --36s-- Happened --38s-- Happened --19s-- Happened --09s-- Happened --33s-- Happened --16s-- Happened
--XXs-- = after XX seconds
Run Code Online (Sandbox Code Playgroud)
有人可以指出如何解决Read timed out问题吗?
非常感谢你.
timeout timeoutexception connection-timeout executiontimeout elasticsearch
我们有一个运行的asp.net站点,它已经运行了一段时间,但最近我遇到了IE8的一些问题.
在发布一些页面时 - 主要是在我们的开发服务器上,虽然也在暂存 - 我们偶尔会出现"Internet Explore无法显示网页"错误以及要求诊断连接问题的按钮.在超时前,IE似乎只等待了10秒.我知道页面本身可能需要更长时间才能加载(在开发和暂存时).所以按F5然后一切正常.
是否有任何应该在aspx页面中完成,告诉IE等待一段时间?
我以为我已经读过默认超时应该是90秒或浏览器的东西.
更多信息:
它主要发生在POSTing注册页面上,但这仅仅是因为我测试了该页面并启动了IIS App,首次连接到SQL并预先缓存了一些信息.第一次页面可能需要10-15秒才能回来.IE8在10秒后超时,因为它没有任何回复.
这种情况发生在具有8GB RAM的开发W7x64机器上,以及登台服务器WIN2008上.
谷歌搜索了一下,有些人看到了同样的问题,但没有确定的问题或解决方案的指针.
这不是连接问题; 在Firefox,Chrome甚至IE7中一切正常; 我已经尝试禁用加载项并重置IE设置,但仍然会发生.
想法欢迎.
计算机睡眠时是否可以保持SSH会话存活?当我让我的Mac(狮子)睡了一小段时间,然后唤醒它仍然活着的会话,但如果我一夜之间离开会话连接关闭.
我试过试过:
ClientAliveInterval 3600 ClientAliveCountMax 10
同样的结果
为什么会话在短时间内"存活"?如何控制此超时?
我喜欢使用控制台日志来获得反馈或许太多,有时我会遇到代码,按照惯例,我们在指令/服务/控制器中添加了$ timeout,有时长达500毫秒,现在问题出在单元测试期间,我注意到只有它直接在它构造函数下的console.log被发送到karma并输出到屏幕.
在超时下包装的控制台日志或者在$ timeout下包含的断言不会产生任何结果,好像被忽略了,超时的解决方案是什么?
在给定的超时后,Future.get(timeout)不能可靠地抛出TimeoutException.这是正常的行为,还是我可以做些什么来使这更可靠?我的机器上的测试失败了.但是如果我睡了3000而不是2000,它就会过去.
public class FutureTimeoutTest {
@Test
public void test() throws
ExecutionException,
InterruptedException {
ExecutorService exec = Executors.newSingleThreadExecutor();
final Callable call = new Callable() {
@Override
public Object call() throws Exception {
try {
Thread.sleep(2000);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
return 0;
}
};
final Future future = exec.submit(call);
try {
future.get(1000, TimeUnit.MILLISECONDS);
fail("expected TimeoutException");
} catch (TimeoutException ignore) {
}
}
Run Code Online (Sandbox Code Playgroud)
}
timeout ×10
iis-7 ×2
javascript ×2
ajax ×1
angularjs ×1
asp.net ×1
asp.net-mvc ×1
curl ×1
java ×1
jquery ×1
karma-runner ×1
php ×1
python ×1
settimeout ×1
ssh ×1
unit-testing ×1
windows ×1