标签: timeout

C++:如何实现任意函数调用的超时?

我不得不调用一个有时不会在给定时间内终止的库函数.有没有办法调用该函数,但如果它在n几秒钟内没有终止就中止它?

我无法修改函数,所以我不能直接将中止条件放入其中.我必须在外部为函数添加超时.

它可能是一个可能的解决方案,将其作为(提升)线程启动,然后我可以在一段时间后终止它?会有类似的东西吗?我实际上认为该函数不是线程安全的,但如果我将它作为唯一的单线程运行则无关紧要,对吧?还有其他(更好的)解决方案吗?

c++ timeout function abort

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

如何在Windows 7下为进程设置超时?

我想用Windows批处理文件启动一个程序.但程序应该在一定的超时值后停止.例如:运行程序60秒并在60秒后停止.

在Linux下,有一个很好的timeout命令来做我想要的.Windows也有一个timeout命令,但它只是暂停一个命令,以延迟执行.Windows下还有其他东西吗?

设置:Windows 7,64位,专业版

timeout batch-file

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

Selenium click()事件似乎不总是被触发=>导致超时?

这是我做的:

selenium.click("link=mylink");
selenium.waitForPageToLoad(60000);

// do something, then navigate to a different page 
// (window focus is never changed in-between)

selenium.click("link=mylink");
selenium.waitForPageToLoad(60000);
Run Code Online (Sandbox Code Playgroud)

链接"mylink"确实存在,click()的第一次调用始终有效.但是第二次点击()有时似乎有效,有时则不然.

看起来似乎根本没有触发click()事件,因为页面甚至没有开始加载.不幸的是,这种行为是不确定的.

这是我已经尝试过的:

  1. 设置更长的时间超时
    =>没有帮助

  2. 加载一个页面后等待元素存在
    =>不起作用,因为页面甚至没有开始加载

现在我最终调用了click()两次,所以:

selenium.click("link=mylink");
selenium.waitForPageToLoad(60000);

// do something, then navigate to a different page 
// (window focus is never changed in-between)

selenium.click("link=mylink");
selenium.click("link=mylink");
selenium.waitForPageToLoad(60000);
Run Code Online (Sandbox Code Playgroud)

这会奏效,但这不是一个非常好的解决方案.我也在另一个论坛上看到有人建议写一些像'clickAndWaitWithRetry'的东西:

  try {
      super.click("link=mylink");
      super.waitForPageToLoad(60000);
  }
  catch (SeleniumException e) {
      super.click("link=mylink");
      super.waitForPageToLoad(60000);
  }
Run Code Online (Sandbox Code Playgroud)

但我认为这也不是一个合适的解决方案....任何想法/解释为什么click()事件有时不会被触发?

java selenium timeout

26
推荐指数
2
解决办法
4万
查看次数

如何在Python中为函数添加超时

过去已经进行了许多尝试以在Python中添加超时功能,以便在指定的时间限制到期时,等待代码可以继续.不幸的是,以前的配方要么允许运行功能继续运行并消耗资源,要么使用特定于平台的线程终止方法来终止该功能.这个wiki的目的是为这个问题开发一个跨平台的答案,许多程序员不得不为各种编程项目解决这个问题.

#! /usr/bin/env python
"""Provide way to add timeout specifications to arbitrary functions.

There are many ways to add a timeout to a function, but no solution
is both cross-platform and capable of terminating the procedure. This
module use the multiprocessing module to solve both of those problems."""

################################################################################

__author__ = 'Stephen "Zero" Chappell <Noctis.Skytower@gmail.com>'
__date__ = '11 February 2010'
__version__ = '$Revision: 3 $'

################################################################################

import inspect
import sys
import time
import multiprocessing

################################################################################

def add_timeout(function, limit=60):
    """Add a …
Run Code Online (Sandbox Code Playgroud)

python asynchronous timeout cross-platform process

26
推荐指数
3
解决办法
1万
查看次数

PHP SoapClient超时

无论如何,SoapClient请求超时并抛出异常.截至目前,我得到PHP服务器响应超时,在我的情况下60秒.基本上我想要的是,如果在一定时间内没有来自Web服务的任何回复,将抛出异常并且我可以捕获它.60秒警告不是我想要的.

php web-services timeout soap-client

26
推荐指数
5
解决办法
7万
查看次数

在固定时间内尽可能多地计算列表

我想编写一个需要时间限制(以秒为单位)和列表的函数,并在时间限制内计算尽可能多的列表元素.

我的第一次尝试是首先编写以下函数,该函数计算纯计算并返回结果的时间:

import Control.DeepSeq
import System.CPUTime

type Time = Double

timed :: (NFData a) => a -> IO (a, Time)
timed x = do t1 <- getCPUTime
             r  <- return $!! x
             t2 <- getCPUTime
             let diff = fromIntegral (t2 - t1) / 10^12
             return (r, diff)
Run Code Online (Sandbox Code Playgroud)

然后,我可以根据这个定义我想要的功能:

timeLimited :: (NFData a) => Time -> [a] -> IO [a]
timeLimited remaining []     = return []
timeLimited remaining (x:xs) = if remaining < 0
    then return []
    else do
        (y,t) <- …
Run Code Online (Sandbox Code Playgroud)

time haskell timeout

26
推荐指数
1
解决办法
659
查看次数

区分超时与用户取消

HttpClient有一个内置超时功能(尽管都是异步的,即超时可以被认为是与http请求功能正交,因此可以由通用异步实用程序处理,但是除此之外)当超时启动时,它会抛出一个TaskCanceledException(包含在内) a AggregateException).

TCE包含CancellationToken等于的CancellationToken.None.

现在,如果我提供HttpClientCancellationToken我自己的一个并使用它来取消操作完成(或超时),我得到完全相同TaskCanceledException,再次使用CancellationToken.None.

通过仅查看抛出的异常,还有一种方法可以确定超时是否取消了请求,而不必让我自己CancellationToken可以访问检查异常的代码?

PS这可能是一个错误,并CancellationToken以某种方式错误地修复CancellationToken.None?在取消使用自定义CancellationToken的情况下,我希望TaskCanceledException.CancellationToken等于该自定义令牌.

编辑 为了使问题更加清晰,通过访问原始文件CancellationTokenSource,很容易区分超时和用户取消:

origCancellationTokenSource.IsCancellationRequested == true

CancellationToken从异常中获取但是给出了错误的答案:

((TaskCanceledException)e.InnerException).CancellationToken.IsCancellationRequested == false

是一个最小的例子,由于受欢迎的需求:

public void foo()
{
    makeRequest().ContinueWith(task =>
    {
        try
        {
            var result = task.Result;
            // do something with the result;
        }
        catch (Exception e)
        {
            TaskCanceledException innerException = e.InnerException as TaskCanceledException;
            bool …
Run Code Online (Sandbox Code Playgroud)

.net c# timeout task-parallel-library dotnet-httpclient

26
推荐指数
2
解决办法
7568
查看次数

Bash Run命令一定时间?

我正在制作bash脚本供我使用.如何运行命令一段时间,比如20秒并终止命令?我尝试了很多来自互联网的解决方案,但没有任何效果,我也试过超时命令但没有成功.请给我一些解决方案.

提前致谢

更新

例如:我想在10秒后在脚本和终端中运行此命令

some command
Run Code Online (Sandbox Code Playgroud)

bash command timeout

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

流浪超时

有一些问题让我的流浪汉,得到了框,运行vagrant initvagrant up命令后我得到这个消息.

Bringing machine 'default' up with 'virtualbox' provider...
    ==> default: Importing base box 'precise32'...
    ==> default: Matching MAC address for NAT networking...
    ==> default: Setting the name of the VM: virtm_default_1400193131859_61200
    ==> default: Fixed port collision for 22 => 2222. Now on port 2201.
    ==> default: Clearing any previously set network interfaces...
    ==> default: Preparing network interfaces based on configuration...
        default: Adapter 1: nat
    ==> default: Forwarding ports...
        default: 22 => 2201 (adapter 1) …
Run Code Online (Sandbox Code Playgroud)

virtualbox timeout vagrant vagrantfile

26
推荐指数
2
解决办法
4万
查看次数

Spring Boot Java Config设置会话超时

如何在Spring Boot应用程序中配置我的(嵌入式)Tomcat会话超时?

public class SessionListener implements HttpSessionListener{

@Override
public void sessionCreated(HttpSessionEvent se) {
    se.getSession().setMaxInactiveInterval(5*60);
}

@Override
public void sessionDestroyed(HttpSessionEvent se) {

}}
Run Code Online (Sandbox Code Playgroud)

我有一个SessionListener,但我不知道在哪个类中我必须将此监听器添加到Context.

session spring timeout spring-boot

26
推荐指数
3
解决办法
7万
查看次数