On 4/6/15 7:12 PM, arash afshar wrote:
I am using sqlalchemy version 0.9.9 with SQLite backend which stores
data on a file on disk.
Moreover, I am using ORM model for all my queries and handle sessions
using scoped_session to work with multiple threads.
The application is a desktop application which should be platform
independent.
The problem is that I receive an error which I cannot debug or find
its origin!
On some operating systems (Windows 7 and Ubuntu 14.04) I get a
"single" error message:
'no handlers could be found for logger "sqlalchemy.pool.nullpool"'
that's a warning, not an error. the pool wants to say that it had
trouble shutting down a connection.
while in another OS (CentOS), I get an error that says a session
created in one thread cannot be used in another thread ....
That's not an error message that SQLAlchemy generates, that's more of a
SQLite issue. The exact text and stack trace would help.
These error messages are shown only once but they does "not" hinder
the normal operation of my python program.
that's a hint that this trace is occurring during Python garbage
collection, which is why it just warns.
I have gone over the code many times and I am certain that I am not
passing the session to another thread. Any ideas why this happens?
A stack trace would show more but it sounds like SQLite connections,
cursors, or transactions are being left open and then collected by
Python's garbage collector asynchronously (e.g. in a different thread),
generating warnings like these.
Here is the workflow of the application:
1) I have a main thread which calls the scoped_session and stores its
result in a module level variable called "ScopedSession"
2) The main thread creates two listener threads.
3) Each of these two listener threads, spawn multiple worker threads
as needed.
4) In any of the above threads (main, listener, and workers) whenever
I need to get a session, I call ScopedSession()
5) At the end of worker threads, I manually call to
ScopedSession().commit() or ScopedSession().rollback() followed by
ScopedSession().close()
The worker threads need to ensure that they use a Session in which they
have also created and that they close it in that same thread, since the
Pysqlite module here is forcing you to use a certain connection only in
one thread.
--
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 [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.