It sounds like the transaction for task B is starting before A's transaction has been committed, but you haven't really given enough information to debug further. How are you managing your sessions and transactions? Do B and A actually overlap (ie. does B start before A finishes)?
Simon On Tue, Mar 22, 2016 at 4:07 PM, TomS. <pidev...@gmail.com> wrote: > Could you advise what would be the best approach for the following problem. > > I have Flask-Celery task. Task consists of two functions (both are run in > the same one Celery task): A and B. Function A calculates values which are > then used by B function. Values are stored in DB (via SQLAlchemy). The > problem is that, somehow, values from A are commited too slow (?), so > function B has nothing to calc (whole task has to be called once again to > get results from function B). > > I use below pattern: > > New values inside function A are commited this way: > > *try:* > > * inserting_session.add(new_value)* > > * inserting_session.commit()* > > *except Exception as e:* > > * inserting_session.rollback()* > > *and after all values are worked out:* > > *inserting_session.close()* > > > Where: > > *class SQLSession(object):* > > * sql_engine = None* > > * @staticmethod* > * def sql_session():* > > * if SQLSession.sql_engine is None:* > > * # create engine* > > * SQLSession.sql_engine = create_engine([...]),* > * pool_recycle=30* > * )* > > * # create a configured "Session" class* > > * insering_session_maker = sessionmaker(bind=SQLSession.sql_engine)* > > * # scope session* > > * inserting_session = scoped_session(insering_session_maker)* > > * # create a Session* > > * inserting_session_scoped = inserting_session()* > > * return inserting_session_scoped* > > > *inserting_session = SQLSession.sql_session()* > > > It works when instead of > > *inserting_session.close()* > > close_all() is called: > > *inserting_session.close()* > > But it probably is not the best solution. > > The question is - how to deal with this issue? > > Cheers! > > -- > You received this message because you are subscribed to the Google Groups > "sqlalchemy" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to sqlalchemy+unsubscr...@googlegroups.com. > To post to this group, send email to sqlalchemy@googlegroups.com. > Visit this group at https://groups.google.com/group/sqlalchemy. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy+unsubscr...@googlegroups.com. To post to this group, send email to sqlalchemy@googlegroups.com. Visit this group at https://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/d/optout.