"tasks"가 포함 된 MySQL 데이터베이스 테이블에 있습니다. 각 작업에는 깃발이 있습니다 (찍혔는지 아닌지).
그리고 이제 예를 들어 3 개 스레드가 수행SQL Alchemy 다중 스레드 SELECT FOR UPDATE가 작동하지 않습니다.
query_base = session.query(PredykcjaRow).filter(
PredykcjaRow.predyktor == predictor,
PredykcjaRow.czy_wziete == False
)
query_disprot = query_base.join(NieustrRow, NieustrRow.fastaId == PredykcjaRow.fastaId)
query_pdb = query_base.join(RawBialkoRow, RawBialkoRow.fasta_id == PredykcjaRow.fastaId)
response = query_pdb.union(query_disprot)
response = response.with_for_update()
response = response.first()
if response is None:
return None
response.czy_wziete = True
try:
session.commit()
return response
except:
return None
각 스레드는 자신의 세션 (ScopedSession)하지만 3 개 스레드가 동일한 개체를 얻을 수 있습니다. 구성
tx_isolation..... REPEATABLE-READ
예, 저는 이렇게합니다 : evry 스레드 호출'scoped_session (session_factory)()' – Behoston