> 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
>

It looks like connections are not persistent.

Can you report the code calling the query ?

>
> 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
>


-- 
Roberto De Ioris
http://unbit.it
_______________________________________________
uWSGI mailing list
[email protected]
http://lists.unbit.it/cgi-bin/mailman/listinfo/uwsgi

Reply via email to