I use PostgreSQL, but it does not matter, because when someone changes the configuration it has still work.
"a new Engine needs to be created in each child fork" If a worker can perform at any given time only one synchronous request and for each worker I create a new engine, it does not have any pool. Do not know if I understand correctly, but it overlooks the fact that no matter whether it is an entirely new process, or created using fork () ("memory of the parent process is` copied `Effectively")? The engine is not shared. I need to create it again. On May 28, 4:53 pm, Michael Bayer <mike...@zzzcomputing.com> wrote: > On May 28, 2011, at 4:25 AM, ddarko wrote: > > > > > > > > > > >http://lists.unbit.it/pipermail/uwsgi/2011-May/002078.html: > > > "...Unfortunately, when running our > > app in uWSGI with more than one worker, we get sporadic, but frequent, > > sqlalchemy-related exceptions when testing under load. Following is an > > example of one of the more common errors we get. > > > Error - <class 'sqlalchemy.exc.OperationalError'>: > > (OperationalError) server closed the connection unexpectedly > > This probably means the server terminated abnormally > > before or while processing the request. > > > It would seem that our app, or sqlalchemy, is making an assumption > > that > > is no longer true when running as multiple workers in uWSGI...." > > > uWSGI 0.9.8 > > Python 3.2 > > SQLAlchemy 0.7.0 > > > Does anyone use this combination? > > How to share a pool of connections between workers? > > The mechanics of fork() are such that the memory of the parent process is > effectively "copied" to the child process. The SQLAlchemy Engine by default > maintains a pool of database connections, which like everything else is > replicated into the child process. Each database connection in the pool > ultimately references a TCP/IP handle to the remote database, unless you're > using SQLite in which case it's an open file handle. These handles lose > their meaning when referenced in a new process, that is the child fork, and > attempts to use the connections in the new process will fail. > > So the short answer is a new Engine needs to be created in each child fork, > or otherwise pooling can be turned off using NullPool. -- 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 sqlalchemy+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en.