我有两个while True
循环,每个循环都从一个外部API读取一些数据。
db = Database(env='dev')
aStream = AStream(db)
proc1 = Process(target=aStream.stream_a_to_db())
proc1.start()
bStream = BStream(db)
proc2 = Process(target=bStream.stream_b_to_db())
proc2.start()
我的Database
类如下所示
class Database:
def __init__(self, env='dev'):
"""DB setup"""
self.db_url = self._set_db_url_by_env(env)
self.engine = create_engine(self.db_url, echo=True)
def create_db_session(self):
# Create all tables that do not already exist
Base.metadata.create_all(self.engine, Base.metadata.tables.values(), checkfirst=True)
# SqlAlchemy :: Session setup
Session = sessionmaker(bind=self.engine)
# SqlAlchemy :: Starts a session
return Session()
我不明白运行这段代码的结果。如果我把proc2
放在proc1
之前,那么到db的proc2
流就是唯一运行的。
我试过两件事。
def func1():
print("func1 up and running.")
def func2():
print("func2 up and running.")
proc1 = Process(target=func1)
proc1.start()
proc2 = Process(target=func2)
proc2.start()
这将按预期运行,func1
和func2
都在运行和打印。
bStream
移动到一个单独的python文件中,并在两个终端选项卡中手动运行两个文件,python a_stream.py
和python b_stream.py
,而不需要对其他代码进行任何更改。它们各自都运行得很好,都将数据流式传输到数据库中,没有任何问题。基本上,我的目标不是拥有两个脚本并手动运行这两个脚本,而是拥有一个包含两个进程的脚本。这样做的正确方法是什么?这一定与SQLAlchemy引擎/会话的工作方式有关。我是SQLAlchemy的新手。感谢这里的任何帮助!
https://stackoverflow.com/questions/57134630
复制相似问题