Inside a Flask
app, I'm using multithreading
module to query two different database tables and it works fine. Just recently I started noticing mix up in the result queue. Like I normally access the results like this result_queue[0]
and result_queue[1]
but I noticed result_queue[0]
contains same result as result_queue[1]
. This shouldn't be because they are querying two different tables...results should never be the same and when I restart Flask it works fine again and after a while results becomes same again and I have to restart
delay = 1
result_queue = []
worker1 = DatabaseWorker("db1", "select something from sometable",
result_queue)
worker2 = DatabaseWorker("db1", "select something from othertable",
result_queue)
worker1.start()
worker2.start()
# Wait for the job to be done
while len(result_queue) < 2:
sleep(delay)
job_done = True
worker1.join()
worker2.join()
result0 = result_queue[0]
result1 = result_queue[1]
#result0 is showing same result as result1 until I restart Flask