0

複数の関数でクラス内のキュー オブジェクトにアクセスする際に問題が発生しています。次のコードは、私が何をしようとしているのかを示している可能性があります。

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()

どんな助けでも素晴らしいでしょう!

4

0 に答える 0