线程化任务并存储到数据库

时间:2019-02-27 12:24:16

标签: python multithreading

我正在使用Queue()Thread()来分解一些与硒有关的工作

q = Queue()

urls = [www.1.com, www.2.com,...]
final_list = []

我想从urls列表中取出项目,并将它们传递到final_list中,该数据将写入数据库。我希望能够“散开” URL的读取/抓取,但只希望有1个作家而不是线程将其写入数据库

def worker():
    while True:
        url = q.get()
        final_list.append(url)
        q.task_done()

for i in range(2):
    t = Thread(target=worker)
    t.dameon = True
    t.start

这有效。

我不了解如何编写一个在final_list中查找新元素的函数,并在出现时将其写入数据库。

我不确定这是否可能?我是否必须在线程中执行此操作(写入数据库)?

类似的东西:

def write_to_db():
    item = final_list.pop(0)
    db_session.add(item)
    db_session.commit()

我正在使用SQLAlchemy

engine = create_engine('...')
db_session = scoped_session(sessionmaker(autocommit=False, autoflush=False, bind=engine))

我不确定如何使write_to_db()与监听final_list的线程同时运行

0 个答案:

没有答案