我有一个blackbox对象,它暴露了一个异步操作的方法,并在操作完成时触发一个事件.我已经将它包装到一个Task<OpResult> BlackBoxOperationAysnc()使用TaskCompletionSource 的方法中 - 效果很好.
但是,在那个异步包装器中,如果在给定的超时后没有收到事件,我想管理用超时错误完成异步调用.目前我使用计时器管理它:
public Task<OpResult> BlackBoxOperationAysnc() {
var tcs = new TaskCompletionSource<TestResult>();
const int timeoutMs = 20000;
Timer timer = new Timer(_ => tcs.TrySetResult(OpResult.Timeout),
null, timeoutMs, Timeout.Infinite);
EventHandler<EndOpEventArgs> eventHandler = (sender, args) => {
...
tcs.TrySetResult(OpResult.BlarBlar);
}
blackBox.EndAsyncOpEvent += eventHandler;
blackBox.StartAsyncOp();
return tcs.Task;
}
Run Code Online (Sandbox Code Playgroud)
这是管理超时的唯一方法吗?有没有设置我自己的计时器 - 我在TaskCompletionSource中看不到任何超时?
我最近从Django 1.4升级到Django 1.7,因为我不断收到一些脚本的错误信息,有时:
OperationalError: (2006, 'MySQL server has gone away')
脚本很长或连续运行的任务可能涉及几分钟内不与数据库通信的阶段,因此连接超时.但是,在升级之前,这没有问题,因为Django似乎会自动重新建立连接.现在它并不意味着任务经常在中间停止和失败.
有谁知道改变了什么以及如何解决它?
它可能与该票证/修复有关:https://code.djangoproject.com/ticket/21463
非常感谢!
我们有一个包含 k8s + Rancher 2(3 个节点)和外部 nginx 的环境,根据本文档,该环境仅将连接转发到 k8s 集群:https ://rancher.com/docs/rancher/v2.x/en/installation/ k8s-安装/
在此环境中运行的特定应用程序中,当我们执行 POST(因为此 POST 大约需要 3 到 4 分钟才能完成)时,它会在 60 秒后被中断,并显示消息“504 Gateway Time-Out”。我尝试应用特定注释来更改超时,如下所示,但无济于事:
应用入口:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: api-loteamento-spring-hml
annotations:
nginx.ingress.kubernetes.io/proxy-connect-timeout: "3600"
nginx.ingress.kubernetes.io/proxy-read-timeout: "3600"
nginx.ingress.kubernetes.io/proxy-send-timeout: "3600"
nginx.ingress.kubernetes.io/server-snippet: "keepalive_timeout 3600s;client_body_timeout 3600s;client_header_timeout 3600s;"
labels:
run: api-loteamento-spring-hml
spec:
rules:
- host: hml-api-loteamento-sp.gruposfa.bla.bla
http:
paths:
- backend:
serviceName: api-loteamento-spring-hml
servicePort: 80
Run Code Online (Sandbox Code Playgroud)
我还尝试使用以下参数创建全局 ConfigMap,但也没有成功:
[rancher@srv-rcnode01 ssl]$ kubectl get pods -n ingress-nginx
NAME READY STATUS RESTARTS AGE
default-http-backend-67cf578fc4-lcz82 1/1 Running 1 38d …Run Code Online (Sandbox Code Playgroud) 我需要做一种"超时"或在我的方法中暂停10秒(10000毫秒),但我不确定以下是否会起作用,因为我没有多线程.
Thread.Sleep(10000);
Run Code Online (Sandbox Code Playgroud)
我将尝试使用当前的代码,但如果有人可以解释这样做的最佳和正确的方法,我将不胜感激,特别是如果上述代码无法正常工作.谢谢!
更新:这个程序实际上是一个控制台应用程序,在该函数中对一个服务器执行许多HTTPWebRequests,所以我希望将它们延迟指定的毫秒数.因此,不需要回调 - 所需要的只是"无条件暂停" - 基本上整个事情停止10秒然后继续.我很高兴C#仍然认为这是一个线程,所以Thread.Sleep(...)会起作用.谢谢大家!
我正在尝试让Django(在GAE之上)从另一个Web服务获取数据.我经常遇到这样的错误:
ApplicationError:2超时请求
方法:GET
异常类型:DownloadError
异常值:ApplicationError:2超时
例外位置:_get_fetch_result中的/google_appengine/google/appengine/api/urlfetch.py,第325行
感觉就好像它会在12秒后超时(我不确定,但它真的很短).
问题:如何设置更长的超时?
当load()在5秒内没有返回时,我想取消.load()操作.如果是这样,我会显示错误消息,例如'抱歉,没有图片加载'.
我拥有的是......
...超时处理:
jQuery.fn.idle = function(time, postFunction){
var i = $(this);
i.queue(function(){
setTimeout(function(){
i.dequeue();
postFunction();
}, time);
});
return $(this);
};
Run Code Online (Sandbox Code Playgroud)
...初始化错误消息超时:
var hasImage = false;
$('#errorMessage')
.idle(5000, function() {
if(!hasImage) {
// 1. cancel .load()
// 2. show error message
}
});
Run Code Online (Sandbox Code Playgroud)
...图像加载:
$('#myImage')
.attr('src', '/url/anypath/image.png')
.load(function(){
hasImage = true;
// do something...
});
Run Code Online (Sandbox Code Playgroud)
我唯一想知道的是如何取消正在运行的load()(如果可能的话).
编辑:
另一种方法:如何阻止.load()方法在返回时调用它的回调函数?
是否有任何参数或选项为Python的subprocess.Popen方法设置超时?
像这样的东西:
subprocess.Popen(['..'], ..., timeout=20) ?
我正在寻找一种为此设置超时的方法:
transport = paramiko.Transport((host, port))
transport.connect(username = username, password = password)
sftp = paramiko.SFTPClient.from_transport(transport)
sftp.get(remotepath, localpath)
sftp.close()
transport.close()
Run Code Online (Sandbox Code Playgroud) 我在localhost写了一个简单的爬行脚本(在php中)(有4个版本).所有这些都在localhost上运行良好.但当我将它们移动到共享主机时,其中两个工作其他人给出了内部服务器错误.我查看了error_log,我看到了这些行:
[Wed Jan 23 22:01:02 2013] [warn] [client ***] mod_fcgid: read data timeout in 61 seconds
[Wed Jan 23 22:01:02 2013] [error] [client ***] Premature end of script headers: index.php
Run Code Online (Sandbox Code Playgroud)
我搜索过但找不到任何有用的结果.这些错误有什么关系?有任何想法吗?
我正在做一个涉及构建和查询Cassandra数据集群的学生项目.
当我的群集负载很轻(大约30GB)时,我的查询运行没有问题,但现在它的数量相当大(1/2TB)我的查询超时.
我认为这个问题可能会出现,所以在我开始生成和加载测试数据之前,我在cassandra.yaml文件中更改了这个值:
request_timeout_in_ms(默认值:10000)其他杂项操作的默认超时.
但是,当我将该值更改为1000000时,cassandra似乎在启动时挂起 - 但这可能只是工作中的大超时.
我的数据生成目标是2TB.如何在不遇到超时的情况下查询大量空间?
查询:
SELECT huntpilotdn
FROM project.t1
WHERE (currentroutingreason, orignodeid, origspan,
origvideocap_bandwidth, datetimeorigination)
> (1,1,1,1,1)
AND (currentroutingreason, orignodeid, origspan,
origvideocap_bandwidth, datetimeorigination)
< (1000,1000,1000,1000,1000)
LIMIT 10000
ALLOW FILTERING;
SELECT destcause_location, destipaddr
FROM project.t2
WHERE datetimeorigination = 110
AND num >= 11612484378506
AND num <= 45880092667983
LIMIT 10000;
SELECT origdevicename, duration
FROM project.t3
WHERE destdevicename IN ('a','f', 'g')
LIMIT 10000
ALLOW FILTERING;
Run Code Online (Sandbox Code Playgroud)
我有一个具有相同模式的演示密钥空间,但数据大小要小得多(~10GB),这些查询在该密钥空间中运行得很好.
查询的所有这些表都有数百万行,每行约30列.
timeout ×10
python ×3
c# ×2
django ×2
apache ×1
async-await ×1
asynchronous ×1
cassandra ×1
cqlsh ×1
image ×1
jquery ×1
jquery-load ×1
kubernetes ×1
mod-fcgid ×1
mysql ×1
paramiko ×1
php ×1
pipe ×1
popen ×1
scp ×1
ssh ×1
subprocess ×1