> On 11/07/2011 11:36 AM, Roberto De Ioris wrote:
>>
>>> On 11/07/2011 08:06 AM, Roberto De Ioris wrote:
>>>>
>>>>> On 11/06/2011 08:23 PM, Roberto De Ioris wrote:
>>>>>>
>>>>>>> On 11/06/2011 07:58 AM, Roberto De Ioris wrote:
>>>>>
>>>>>>>
>>>>>>> --attach-daemon works file.
>>>>>>>
>>>>>>
>>>>>> attach-daemon create a new process group, so if you call fork() and
>>>>>> simply
>>>>>> run code the children will be killed too.
>>>>>>
>>>>>> How do you create children ? If you call setsid(), a new process
>>>>>> group
>>>>>> will be created so uWSGI will not be able to kill them.
>>>>>
>>>>>
>>>>> I naively used sobprocess.Popen
>>>>> # Simplified code snippet
>>>>> import subprocess
>>>>> log_file = open( 'stdout.log', 'wb')
>>>>> err_log_file = open('stderr.log', 'wb')
>>>>> cmd = [ 'cmd' , 'param1', 'param2') ]
>>>>> proc = subprocess.Popen(cmd, stdout=log_file, stderr=err_log_file)
>>>>> proc.wait()
>>>>>
>>>>
>>>> Looks good.
>>>> #!/usr/bin/env python
>>> import os, sys
>>> import subprocess
>>>
>>> os.chdir( os.path.dirname(__file__) )
>>>
>>> log_file = open('spawn_test.log', 'wb')
>>> err_log_file = open('spawn_test_err.log', 'wb')
>>> proc = subprocess.Popen([ './child.py' ] , stdout=log_file,
>>> stderr=err_log_file)
>>> proc.wait()
>>> Check with ps if the spawned processes are all under the same process
>>> group.
>>>> Maybe some of your children call setsid()/setpgroup()
>>>>
>>>
>>> Everything looks fine in my opinion. However the child process doesn't
>>> die :-( .
>>>
>>> I have two simple python scripts:
>>> #!/usr/bin/env python
>>> # #################### the daemon ######
>>> import os, sys
>>> import subprocess
>>>
>>> os.chdir( os.path.dirname(__file__) )
>>>
>>> log_file = open('spawn_test.log', 'wb')
>>> err_log_file = open('spawn_test_err.log', 'wb')
>>> proc = subprocess.Popen([ './child.py' ] , stdout=log_file,
>>> stderr=err_log_file)
>>> proc.wait()
>>>
>>> #!/usr/bin/env python
>>> # ################ The child
>>> import sys, time
>>> for i in range(200):
>>>     print i
>>>     sys.stdout.flush()
>>>     time.sleep(3)
>>>
>>> # ######### The uwsgi xml file
>>> <uwsgi>
>>>  <uid>nginx</uid>
>>>  <gid>nginx</gid>
>>>  <socket>127.0.0.1:1234</socket>
>>>  <master />
>>>  <workers>8</workers>
>>>  <attach-daemon>/path/to//spawn_test.py</attach-daemon>
>>>  <pidfile>/var/run/uwsgi/uwsgi.pid</pidfile>
>>>  <daemonize>/var/log/uwsgi/uwsgi.log</daemonize>
>>>  <env>APP_VAR=var</env>
>>>  <pp>/my_ppath</pp>
>>>  <virtualenv>/myvirtenvn</virtualenv>
>>>  <module>my.module</module>
>>> </uwsgi>
>>>
>>> # my ps command
>>> ps axo 'user,group,euser,egroup,pid,pgid,cmd' | grep nginx
>>>
>>> # PS BEFORE STARTING:
>>> Nothing
>>>
>>> # AFTER STARTING
>>> . . .
>>> nginx    nginx    nginx    nginx     5784  5775 /virtenv/bin/uwsgi -x
>>> /etc/uwsgi/uwsgi-conf.xml # this line multiple times
>>> nginx    nginx    nginx    nginx     5785  5775 python
>>> /path_to/spawn_test.py
>>> nginx    nginx    nginx    nginx     5786  5775 python ./child.py
>>>
>>
>> here i see all of the processes under the same pgid (5775).
>> Which uWSGI version are you using ?
>>
> $ uwsgi --version
> uWSGI 0.9.8
>
>

Process group support is only available after 0.9.8.1.

You should upgrade to one of the latest (0.9.8.6, 0.9.9.2) or 1.0-rc


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

Reply via email to