2017-06-26 17 views
-1

我卡在這,而現在錯誤:queue.task_done()調用來多次在Python

class ThreadingPower(threading.Thread): 
def __init__(self, queue): 
    threading.Thread.__init__(self) 
    self.queue= queue 

def run(self): 
    while True: 
     Manager = self.queue.get() 
     for Numbers,HWID in Manager: 
      r = requests.post(URL, data=payload) # License Checker Required Numbers (Buyer Code) And HWID (License Code) 
      data = (r.text) 
      if ('Verified' in data): 
       with open(resultsFile,'a+') as results: 
        results.write("The Number : "+str(Numbers)+" Is Verified By The "+str(HWID)) 
       results.close() 
       print str(HWID)+" Is Server Verified" 
       active =+ 1 
       self.queue.task_done() 
      else: 
       print str(HWID)+" Is Not Server Verified" 
       self.queue.task_done() 


if __name__ == "__main__": 
    for i in range(10): 
     t = ThreadingPower(queue) 
     t.setDaemon(False) 
     t.start() 

    queue.put(credentials) 
    queue.join() 

的憑據是這樣的:

[ 
['UniqueHWID', 'BuyerCode'], 
['UniqueHWID', 'BuyerCode'], 
['UniqueHWID', 'BuyerCode'] 
] 

它一直得到要許多調用錯誤

回答

0

問題:錯誤:queue.task_done()調用很多次

撥打.task_done()應與.queue.get()同步。
你做了.task_done(),在for ...循環內多次。

更改您的代碼:

while True: 
    Manager = self.queue.get() 
    for Numbers,HWID in Manager: 
     ... 
     if ('Verified' in data): 
      ... 
      active =+ 1 
     else: 
      print str(HWID)+" Is Not Server Verified" 

    self.queue.task_done() 
+0

太謝謝你了 –