如何在多个函数中使用Python队列

时间:2013-06-04 14:27:26

标签: python queue

我遇到了在多个函数中访问我的类中的队列对象的问题,以下代码可能会告诉您我正在尝试做什么;

import MySQLdb
import socket, sys
from struct import *
import threading
import sched, time
from datetime import datetime
from copy import deepcopy
import Queue
IP = {}

class QP:

 def __init__(self):
        self.jobs = Queue.Queue()

    # this function runs every 10 seconds
    # and processes any queued data.
 def processQueue(self):
        print(self.jobs.qsize())
        time.sleep(5)
        if self.jobs.empty():
            print("No items in queue")
        else:
            IP_TEMP = {}
            IP_TEMP = self.jobs.get()
            IP_TEMP_QUEUE = {}
            IP_TEMP_QUEUE = IP_TEMP
            try:
                cnx = #connect to database
                cursor = cnx.cursor()
                for k, v in IP_TEMP.iteritems():

                    #there is some code here, but its not the issue

                    try:
                        cursor.execute(add_packet, data_packet)
                        cnx.commit()
                        print("Task Done")
                    except:
                        print("Query failed, skipping")
                        break
            except:
                self.queueJobs(IP_TEMP_QUEUE)

            IP = {}
            self.jobs.task_done()
            self.processQueue()

    # this function is called by other modules to add data
 def queueJobs(self, data):
        self.jobs.put(data)
        print(self.jobs.qsize())
        return True

这就是我在其他模块中调用queueJobs方法的方法:

self.process.queueJobs(IP_TEMP_QUEUE)

现在,主要问题是processQueue()函数始终返回队列中没有作业,即使它们已添加到queueJobs()函数的下方。

任何帮助都会很棒!

0 个答案:

没有答案