On Wednesday 28 May 2008 20:13:20 Werner F. Bruhin wrote:
> Werner F. Bruhin wrote:
> > Werner F. Bruhin wrote:
> >> I am having a problem with my app not closing correctly when I
> >> py2exe'd it.
> >>
> >> Trying to track it down but with not much look so far and as
> >> sqlalchemy is one of the big changes I did in this version of
> >> the app (i.e. moved from another ORM to sqlalchemy) I wonder if
> >> there are some things I have to watch out for.
> >>
> >> As I suspected SA I make sure that on close all my connections
> >> are closed and for good measure I also "del" my session and the
> >> engine.
> >>
> >> Is there anything else I should watch out for?
> >>
> >> Is there some way I can check that I really closed all my
> >> connections?
> >>
> >> Is SA using threads?  If yes, do I need to do something special
> >> to ensure that they are all closed/finished?
> >
> > I resolved the issue by adding a "del self.ds" (which is my
> > session)
> >
> > So, now I do something along these lines:
> >
> > self.engine = db.sa.create_engine(dburl, encoding='utf8',
> > echo=False) self.Session = db.sao.sessionmaker(autoflush=True,
> > transactional=True) self.Session.configure(bind=self.engine)
> > self.ds = self.Session()
> > ...
> > self.ds.Close()
> > del self.ds # if I don't do this app does not close
> > del self.Session
> > del self.engine
> >
> > I am using SA 0.4.3 and the engine is Firebird.
> >
> > Is this an indication that I am not closing something correctly,
> > if yes what could it be.
> >
> > BTW, I also tried "self.Session.close_all()"
> >
> > While the "del" solves my issue I am a bit nervous that I am
> > using SA somehow incorrectly.
>
> Had a discussion on this problem on the wxPython list with Andrea,
> he uses SA 0.4.6 with SQLite and does not see any issue when his
> py2exe'd application when it closes.
>
> This confirms to me that either I am doing something wrong or the
> Firebird SQL backend in SA is for some reason not closing
> correctly.
>
> Can anyone give me some hints on what I should look for/at to
> figure out what is causing the hang on a normal application
> shutdown.

u probably have some ref-cycle between that self and and the .ds (or 
some object in the ds, etc).

my destroy() is used for clean-testcase policy and it does:
 close and del any sessions
 del all my references to mappers,tables,selectables, 
 kill _all_ caches
 orm.clear_mappers
 metadata.drop_all
 del metadata
 engine.dispose()
 del engine
 detach_instances - this is my func that walks all live instances and 
deletes x._instance_key and x._state

i have no threads, session-making is plain create_session()

do see which may do something for you...

for example, i did have a ref-cycle in some klas-cache; but it did 
break when i kill the __init__ method and the __init copy... took me 
3 days to find out why/where.

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalchemy@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to