Thanks for reply,

processlit just shows 1 peer:
mysql  -e"show processlist;"
| 103 | root | localhost | photodb_dev | Query   |    0 | NULL  | show
processlist |

I also compared result of "show global status" before and after start uWSGI
server but found nothing significant, maybe only "Aborted_connects" - but
it's in both cases.

before starting uWSGI server: http://pastebin.com/HwNRFVZA
after starting: http://pastebin.com/iRMsHxKG

Tom


On Sat, May 25, 2013 at 5:53 PM, Roberto De Ioris <[email protected]> wrote:

>
> > Hi,
> >
> > I created postfork decorater to forking my config class for each worker.
> > In
> > config class there is establishing mysql database connection in init.
> > Everything seems to be working fine (selects working well) but mysql
> "show
> > global status" shows after starting uWSGI RPC server with 3 workers:
> > Threads_cached  2
> > Threads_connected 1
> > Threads_created 3
> > Threads_running 1
> >
> > Shouldn't be there "Threads_connected  3"? Or do I have something wrong
> in
> > calling @postfork?
> >
> > Short examples:
> >
> > *file: server.py*
> > from lib import config as configapp
> > @postfork
> > def init():
> >     import __builtin__
> >     __builtin__.ConfigPhotoserver = configapp.ConfigPhotoserver
> >
> > import rpcinterface as iface
> > ...
> >
> >
> > *file: rpcinterface.py: *there is no importing config, ConfigPhotoserver
> > is
> > already in global scope (checked with: print globals())
> > def getGallery():
> >     cfg = ConfigPhotoserver()
> >     conn = cfg.sql.conn
> >
> >
> >     c = conn.cursor()
> >     # .... etc
> >
> > *file config.py:*
> > class ConfigPhotoserver:
> >     def __init__(self):
> >         # some init ConfigParser stuff ....etc
> >
> >         self.sql = ConfigSql(parser)
> >
> > class ConfigSql(Sql):
> >      def __init__(self):
> >          # parsing values needed for connection ....etc
> >
> >          self.connect()
> >
> > *file sql.py:*
> > import* *MySQLdb
> > class Sql():
> >     def __init__(self):
> >         self.conn = False
> >     #enddef
> >
> >     def connect(self):
> >         self.conn = \
> >                 MySQLdb.connect(
> >                     user=self.user, \
> >                     host=self.host, \
> >                     passwd=self.password, \
> >                     db=self.database, \
> >                     unix_socket=self.socket
> >         )
> >
> >         return self.conn
> >
> > Maybe it is a bit complicated but it seemed to me as the best solution:
> if
> > I want db connection was created after forking each worker (and to be
> > write-safe) and not to pass param conn in each function that needs it.
> >
> > Thanks for any remarks :-)
> >
>
> The 2 cached threads should confirm you the code is right.
>
> Does show processlist reports 3 peers ?
>
>
> --
> Roberto De Ioris
> http://unbit.it
> _______________________________________________
> uWSGI mailing list
> [email protected]
> http://lists.unbit.it/cgi-bin/mailman/listinfo/uwsgi
>
_______________________________________________
uWSGI mailing list
[email protected]
http://lists.unbit.it/cgi-bin/mailman/listinfo/uwsgi

Reply via email to