Я использую реляционную базу данных через SQLAlchemy.Я хочу создать работу, которая занимается базами данных с использованием Celery.Есть код:
from sqlalchemy.orm.session import Session
from celery.task import task
from myapp.user import User
@task
def job(user):
# job...
session = Session.object_session(user)
with user.begin():
user.value = result_value
def ordinary_web_request_handler(uid):
assert isinstance(session, Session)
user = session.query(User).get(int(uid))
# deals with user...
job.delay(user)
return response
Мне нужно использовать сеанс SQLAlchemy в отложенном job
, но session
пока нет.Как я могу установить сеанс в переданную user
сущность?
Есть способы, о которых я подумал, но я не уверен, какой из этих (или ни один из них) является лучшим:
- Всегда передавать только первичные ключи и получать новые экземпляры по переданным первичным ключам.
- Установить сеанс пропущенных экземпляров (но я не знаю, как).
- Не использоватьORM в отложенном задании.