python - my code is always printing "COMPLETED" and dont exit the while loop -
i have mapreducejob define jobid:
jobid = emr.run_jobflow(name="data processing" after mapreduce job want show message "completed job" when mapreduce job status == "completed".
im trying code below, im having status like:
starting starting .... running ... completed completed completed completed
the problem is printing "completed" , dont exit while loop. , want exit shows message "completed job".
do see issue is?
status = emr.describe_jobflow(jobid) while status.state != 'completed' or status.state != 'failed': status = emr.describe_jobflow(jobid) print status.state print "job status:" + str(status.state) print "" print "completed job"
while status.state != 'completed' or status.state != 'failed': this line evaluates true. when state "completed", evaluates false or true, true. when state "failed", evaluates true or false, true. when state else, evaluates true or true, true. loop continues infinitely.
the equivalent of "until or b" not "while not or not b", it's "while not , not b". see de morgan's laws more detail.
replace or and.
while status.state != 'completed' , status.state != 'failed':
Comments
Post a Comment