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
