如何结束while True循环,我希望循环在标记的位置结束,但是我尝试了break
和{
class MyHandler(BaseHTTPRequestHandler):
def log_message(self, format, *args):
return
def do_GET(self):
if self.path.startswith("/checkTransfer"):
qs = {}
path = self.path
if '?' in self.path:
qs = parse_qs(urlparse(self.path).query)
print "Received Transfer Check request for transfer id: " + qs["transferID"][0]
while True:
if checkProgress(qs["transferID"][0]) == 1:
self.send_response(200)
self.send_header('Content-type', 'text/json')
self.end_headers()
self.wfile.write('{"status" : 1}')
print "Transfer Completed! Checking for downloads"
******* break; *******
******* ^ This is where I need to end the loop *******
elif checkProgress(qs["transferID"][0]) == 0:
self.send_response(200)
self.send_header('Content-type', 'text/json')
self.end_headers()
self.wfile.write('{"status" : 0}')
print "Incomplete Transfer, Waiting..."
time.sleep(3)
elif checkProgress(qs["transferID"][0]) == 2:
self.send_response(200)
self.send_header('Content-type', 'text/json')
self.end_headers()
print "Could Not Find Transfer, Could Be Removed"
self.wfile.write('{"status" : 2}')
break;
将您的
while
条件设置为与要达到的结果相反的位置。在在这种情况下,最好也将值赋给某个值,或者在实现该值后将其简单地
^{pr2}$return
指定给您想要的值。由于您的while
位于函数中,因此您也可以使用return
来中断while循环。在好吧,我得猜猜看。我想你的循环真的会随着中断而退出,但是你没有注意到,因为服务器只是去等待下一个客户机请求。在函数的末尾放一个调试消息,比如
print "do_GET finished"
,看看是否发生了这种情况。在if语句只需要值0、1或2。即使您百分之百确定这是唯一可能的值,您也应该捕获意外情况并在发生异常时引发异常-不管这是否是导致此特定情况下脚本永不结束的原因,这都是代码中的一个潜在漏洞:
相关问题 更多 >
编程相关推荐