Python 正确使用sqlalchemy进行线程处理?

Python 正确使用sqlalchemy进行线程处理?,python,multithreading,sqlalchemy,Python,Multithreading,Sqlalchemy,我有一个多线程应用程序,其中踏板处理一些使用sqlalchemy获取的对象。对象被放入线程轮询的线程队列中 在主线程中,我正在执行以下操作: feeds = db_session.query(Feed).filter(Feed.last_checked <= int(update_time)).all() for feed in feeds: self.feed_q.put(feed) 我知道共享同一DB会话的线程有一些问题需要解决,但我不知道如何解决这个问题。每个线程都应该有一

我有一个多线程应用程序,其中踏板处理一些使用sqlalchemy获取的对象。对象被放入线程轮询的线程队列中

在主线程中,我正在执行以下操作:

feeds = db_session.query(Feed).filter(Feed.last_checked <= int(update_time)).all()
for feed in feeds:
    self.feed_q.put(feed)

我知道共享同一DB会话的线程有一些问题需要解决,但我不知道如何解决这个问题。

每个线程都应该有一个单独的数据库会话。您可能正在创建最终存储在
db\u session
某处的对象,可能如下所示:

db_session = Session()

本质上,您需要每个线程都有自己的
db\u会话

每个线程都应该有一个单独的数据库会话。您可能正在创建最终存储在
db\u session
某处的对象,可能如下所示:

db_session = Session()

基本上,您需要每个线程都有自己的
db\u会话

如何将放入队列中的对象注册到线程中创建的会话中呢?@pyCtrl\u:Run
db\u session.expunge(feed)
在发送前在主线程上运行
db\u session.add(feed)工作线程上的
。如何将放入队列的对象注册到线程中创建的会话中?@pyCtrl\u:在主线程上运行
db\u session.expunge(feed)
,然后再将其发送出去和
db\u session.add(feed)
关于辅助线程。请详细说明一下您在使用多个线程时所做的工作。你是如何使用你的对象的,以及你想用它们做的事情的种类可能决定了让你的程序与线程很好地工作的最佳方式。你能详细说明一下你用多线程做什么吗。您如何使用对象,以及您想用它们做的事情的种类,可能会决定使您的程序与线程协同工作的最佳方式。