python创建队列函数_创建线程化python队列?

我该如何在Python中创建一个在后台运行任务的队列?在

我已经试过了异步队列()但每当我使用队列.put(task)它立即启动任务。在

它适用于在指定时间间隔内从数据库接收未知数量的条目(文件名)的应用程序。我希望用这个backgroundqueue实现的是python应用程序继续运行并不断返回新的文件名。每次应用程序发现新文件名时,它都应该通过创建一个任务来处理它们,该任务将包含(method(variables))。这些任务都应该被放入一个不断扩展的队列中,这个队列独立运行任务。这是密码。在class DatabaseHandler:

def __init__(self):

try:

self.cnx = mysql.connector.connect(user='root', password='', host='127.0.0.1', database='mydb')

self.cnx.autocommit = True

self.q = asyncio.Queue()

except mysql.connector.Error as err:

if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:

print("Something is wrong with your user name or password")

elif err.errno == errorcode.ER_BAD_DB_ERROR:

print("Database does not exist")

else:

print(err)

self.get_new_entries(30.0)

def get_new_entries(self, delay):

start_time = t.time()

while True:

current_time = datetime.datetime.now() - datetime.timedelta(seconds=delay)

current_time = current_time.strftime("%Y-%m-%d %H:%M:%S")

data = current_time

print(current_time)

self.select_latest_entries(data)

print("###################")

t.sleep(delay - ((t.time() - start_time) % delay))

def select_latest_entries(self, input_data):

query = """SELECT FILE_NAME FROM `added_files` WHERE CREATION_TIME > %s"""

cursor = self.cnx.cursor()

cursor.execute(query, (input_data,))

for file_name in cursor.fetchall():

file_name_string = ''.join(file_name)

self.q.put(self.handle_new_file_names(file_name_string))

cursor.close()

def handle_new_file_names(self, filename):

create_new_npy_files(filename)

self.update_entry(filename)

def update_entry(self, filename):

print(filename)

query = """UPDATE `added_files` SET NPY_CREATED_AT=NOW(), DELETED=1 WHERE FILE_NAME=%s"""

update_cursor = self.cnx.cursor()

self.cnx.commit()

update_cursor.execute(query, (filename,))

update_cursor.close()

正如我所说,这将立即运行任务。在

create_new_npy_files是静态类中非常耗时的方法。在


版权声明:本文为weixin_39826342原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。