我有一个小问题,我不太确定如何解决.这是一个最小的例子:
scan_process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
while(some_criterium):
line = scan_process.stdout.readline()
some_criterium = do_something(line)
Run Code Online (Sandbox Code Playgroud)
scan_process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
while(some_criterium):
line = scan_process.stdout.readline()
if nothing_happens_after_10s:
break
else:
some_criterium = do_something(line)
Run Code Online (Sandbox Code Playgroud)
我从子进程读取一行并用它做一些事情.我想要的是在固定时间间隔后没有线路到达时退出.有什么建议?
有些客户端连接到我们的postgresql数据库,但保持连接打开.是否有可能告诉Postgresql在一定量的不活动后关闭这些连接?
TL; DR
如果您使用的是Postgresql版本> =
9.2
那么请使用我提出的解决方案如果您不想编写任何代码,
那么使用arqnid的解决方案
试图找到一种在Selenium Python WebDriver中设置命令执行延迟的最大时间限制的好方法.理想情况下,例如:
my_driver = get_my_driver()
my_driver.set_timeout(30) # seconds
my_driver.get('http://www.example.com') # stops / throws exception when time is over 30 seconds
Run Code Online (Sandbox Code Playgroud)
会工作.我发现了.implicitly_wait(30),但我不确定它是否会导致所需的行为.
如果它有用,我们专门使用WebDriver for Firefox.
编辑
根据@ amey的回答,这可能有用:
ff = webdriver.Firefox()
ff.implicitly_wait(10) # seconds
ff.get("http://somedomain/url_that_delays_loading")
myDynamicElement = ff.find_element_by_id("myDynamicElement")
Run Code Online (Sandbox Code Playgroud)
但是,我不清楚隐式等待是否适用于get(这是所需的功能)和find_element_by_id.
非常感谢!
我看到很多连接都是开放的,并且长时间闲置,比如5分钟.
是否有任何解决方案从服务器终止/关闭它而不重新启动mysql服务?
我正在维护一个遗留的PHP系统,无法关闭为执行查询而建立的连接.
我应该减少my.cnf文件中的超时值,默认为8小时吗?
# default 28800 seconds
interactive_timeout=60
wait_timeout=60
Run Code Online (Sandbox Code Playgroud) 我正在使用SocketServer模块作为TCP服务器.我在这里遇到了一些问题recv(),因为传入的数据包总是有不同的大小,所以如果我指定recv(1024)(我尝试使用更大的值,更小),它会在2或3个请求后被卡住,因为数据包长度将会更小(我认为),然后服务器卡住,直到超时.
class Test(SocketServer.BaseRequestHandler):
def handle(self):
print "From:", self.client_address
while True:
data = self.request.recv(1024)
if not data: break
if data[4] == "\x20":
self.request.sendall("hello")
if data[4] == "\x21":
self.request.sendall("bye")
else:
print "unknow packet"
self.request.close()
print "Disconnected", self.client_address
launch = SocketServer.ThreadingTCPServer(('', int(sys.argv[1])),Test)
launch.allow_reuse_address= True;
launch.serve_forever()
Run Code Online (Sandbox Code Playgroud)
如果客户端通过相同的源端口发送多个请求,但服务器卡住,任何帮助将非常感谢,谢谢!
在我的Android应用程序中,我遇到了一个非常奇怪的崩溃,当我在我的UI上按下一个按钮(图像)时,整个应用程序冻结,几秒钟后我就会出现可怕的强制关闭对话框.
以下是在日志中打印的内容:
WARN/WindowManager(88): Key dispatching timed out sending to package name/Activity
WARN/WindowManager(88): Dispatch state: {{KeyEvent{action=1 code=5 repeat=0 meta=0 scancode=231 mFlags=8} to Window{432bafa0 com.android.launcher/com.android.launcher.Launcher paused=false} @ 1281611789339 lw=Window{432bafa0 com.android.launcher/com.android.launcher.Launcher paused=false} lb=android.os.BinderProxy@431ee8e8 fin=false gfw=true ed=true tts=0 wf=false fp=false mcf=Window{4335fc58 package name/Activity paused=false}}}
WARN/WindowManager(88): Current state: {{null to Window{4335fc58 package name/Activity paused=false} @ 1281611821193 lw=Window{4335fc58 package name/Activity paused=false} lb=android.os.BinderProxy@434c9bd0 fin=false gfw=true ed=true tts=0 wf=false fp=false mcf=Window{4335fc58 package name/Activity paused=false}}}
INFO/ActivityManager(88): ANR in process: package name (last in package name)
INFO/ActivityManager(88): Annotation: keyDispatchingTimedOut
INFO/ActivityManager(88): …Run Code Online (Sandbox Code Playgroud) 我通过它来调用服务器来使用RestClient gem.问题是如何从客户端设置超时.
RestClient.get "http://127.0.0.1:7819/tokenize/word/stackoverflow"
Run Code Online (Sandbox Code Playgroud)
我想把它设置为10秒.
提前致谢!!
我在Laravel上php artisan queue:listen用来运行排队的工作.其中一个工作相当复杂,需要很长时间,因此我收到以下错误:
[Symfony\Component\Process\Exception\ProcessTimedOutException]
The process ""/usr/local/Cellar/php55/5.5.14/bin/php" artisan queue:work
--queue="QUEUE_URL" --delay=0 --memory=128 --sleep=3 --tries=0"
exceeded the timeout of 60 seconds.
Run Code Online (Sandbox Code Playgroud)
我知道我可以运行queue:listen一个任意高的超时值,但是这不是理想的,因为我不希望它的活动时间,一些过程实际上 unreseponsive.我尝试set_time_limit(60)在作业调用的函数内定期调用,但这并没有解决我的问题.
我找到了一个在线提及的线程Symfony\Component\Process\Process->setTimeout(null),但我不知道如何访问该进程对象,或者如果这甚至可以解决问题.
任何帮助将非常感激.
我正在使用Selenium 2.20 WebDriver使用C#创建和管理firefox浏览器.要访问页面,我使用以下代码,在访问URL之前设置驱动程序超时:
driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); // Set implicit wait timeouts to 5 secs
driver.Manage().Timeouts().SetScriptTimeout(new TimeSpan(0, 0, 0, 5)); // Set script timeouts to 5 secs
driver.Navigate().GoToUrl(myUrl); // Goto page url
Run Code Online (Sandbox Code Playgroud)
问题是有时页面需要永远加载,并且看起来使用selenium WebDriver加载页面的默认超时是30秒,这太长了.我不相信我设置的超时适用于使用GoToUrl()方法加载页面.
所以我试图弄清楚如何设置页面加载的超时,但是,我找不到任何实际工作的属性或方法.当我单击一个元素时,默认的30秒超时似乎也适用.
有没有办法将页面加载超时设置为特定值,以便当我调用GoToUrl()方法时,它只会等待我指定的时间才能继续?
在我的应用程序的特定页面上,我想到进行服务器调用以更新设置间隔的信息.我偶然发现了一个问题.我希望在用户离开相关页面时取消我的$ timeout,以便应用程序不会尝试使用不再存在的内容.
关于如何解决这个问题的任何想法?
timeout ×10
python ×3
selenium ×2
wait ×2
android ×1
angularjs ×1
c# ×1
connection ×1
dispatch ×1
firefox ×1
freeze ×1
javascript ×1
key ×1
kill ×1
laravel ×1
mysql ×1
networking ×1
php ×1
postgresql ×1
python-idle ×1
queue ×1
recv ×1
rest-client ×1
ruby ×1
subprocess ×1
symfony ×1
webdriver ×1