2011-11-07 18 views
1

我正在通過SQLAlchemy使用關係數據庫。我想生成一個使用Celery處理數據庫的工作。有一個代碼:延遲SQLAlchemy會話處理芹菜任務

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 

我需要在延遲job使用SQLAlchemy的會議,但沒有session呢。我如何設置一個會話傳入user實體?

有辦法我想,但我不知道它的這些(或沒有這些)是最好的做法:

  • 總是隻傳遞主鍵,並通過所傳遞的主鍵檢索新的實例。
  • 設置傳遞實例的會話(但我不知道如何)。
  • 請勿在延遲任務中使用ORM。

回答