1
私は初心者SQLAlchemyの使用だと私は複雑なETLプロセスに取り組んでいると、複数のモジュール間でscoped_sessionの取り扱いので、私でした以下の簡略化されたコード:SQLAlchemyの
module1.py
class Foo:
def foo_method(self):
# doing stuff with database
module2.py
class Bar:
def bar_method(self):
# doing stuff with database
main_script.py
from module1 import Foo
from module2 import Bar
def run():
with Pool(processes = num_workers) as pool:
responses = [pool.apply_async(some_func, (param)) for param in params]
for response in responses:
response.get()
def some_func(param):
engine = create_engine(connection_string, echo=True)
Session = scoped_session(sessionmaker(bind=engine))
session = Session()
# Start doing some stuff with database
foo = Foo()
foo.foo_method()
bar = Bar()
bar.bar_method()
私はワーカープロセスを持つプールを持っています。 main_script.run()
と呼ぶと、各作業者はsome_func
のデータベースセッションを作成します。私の質問は、どのように、各メソッドにparamでセッションを渡すことなく、module1とmodule2の各ワーカーに同じセッションを使用できるのですか?各モジュール/ファイルに次の行を追加する必要がありますか?
engine = create_engine(connection_string, echo=True)
Session = scoped_session(sessionmaker(bind=engine))
session = Session()
@univerioこんにちは、:おそらくエンジンとのセッションを収容するために別のモジュールを有することを意味するプロジェクトの構造については、あなたのansewerのおかげで。私はそれを試してみませんか?あなたは私に提案するより良いアプローチをしていますか?私はそれを本当に評価します –
@ Overflow012あなたが何を求めているのか分かりません。これが標準的なアプローチです。これはあなたのために働かないのですか? – univerio