次のような SQLAlchemy モデル オブジェクトがあります。
ResultModelBase = declarative_base()
class Task(ResultModelBase):
"""Task result/status."""
id = sa.Column(sa.Integer, sa.Sequence("task_id_sequence"),
primary_key=True,
autoincrement=True)
task_id = sa.Column(sa.String(255))
2 つの個別のクライアント プロセスで、このコードが実行され、一意の task_id を持つ新しいインスタンスが作成されます。task_id のインスタンスは 1 つだけである必要があります。
task = session.query(Task).filter(Task.task_id == task_id).first()
if not task:
task = Task(task_id)
session.add(task)
session.flush()
指定された ID を持つタスクをアトミックに作成するように、このコードを書き直すにはどうすればよいですか?