From: Tim v. d. L. <tn...@gm...> - 2008-05-27 13:08:26
|
Hi Werner, > The problems seems to have to do with sqlalchemy, if I only close the > database sessions then it hangs, I have to do: > > 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() > ... application does whatever and then on close I do > self.ds.Close() > # if I don't do the del's app does not close > del self.ds > del self.Session > del self.engine > > I am checking with the SA list why this is necessary, I probably am doing > something wrong somewhere along the lines. > Doing the del's will invoke the garbage-collection and the finalizers on those objects. So I guess that in their finalization, they close for instance some db-connection. The db-connection(-pool) could open native OS threads, and keep them alive as long as the connection(-pool) isn't closed. That would also explain why you can't list the threads with threading.enumerate(). Which database do you use? How hard is it to switch to a different DB backend for testing purposes, to see if the drivers for that DB behave differently? Cheers, --Tim > > Anyhow thanks for the tips. > Werner > You're welcome. |