It's still not clear why the scheduler does not fit your needs.  Anyway
what you want seems to need should be a *deamon*.
You can launch it in the middle of the request/response cycle or from the
scheduler it will detach from the parent (the launching) process and work
in the background.

pip install python-daemon

http://pypi.python.org/pypi/python-daemon/


mic


2012/11/7 Richard Baron Penman <richar...@gmail.com>

> OK, got a solution that has been working well for last few days now.
>
> I made 2 mistakes previously that caused me trouble:
>
> 1) The child processes are independent. I had used ctrl+c to kill
> web2py, which was passed on to the child processes.
> When kill -9 [web2py PID] was used the child processes continued fine.
>
> 2) The parent process can kill child processes but they became zombie
> processes until the parent process dies.
> Originally I was checking /proc/PID for process existence so seemed to
> always exist. Now using the psutil package, which has some useful
> cross platform features. Much better than parsing output of ps!
>
>
> The scheduler was not helpful for this use case.
>
> Here are some functions I used in case they help others:
>
>
> def exists(pid):
>     """Return whether the process exists"""
>     try:
>         p = psutil.Process(pid)
>         if p.status == psutil.STATUS_ZOMBIE:
>             return False # ignore zombie processes
>         else:
>             return True
>     except psutil.NoSuchProcess:
>         return False
>
>
> def stop(pid):
>     """Try to kill this process, first with interrupt and then kill signal
>     """
>     success = True
>     try:
>         p = psutil.Process(pid)
>         p.terminate()
>         time.sleep(1) # if don't delay here a bit then exists() call
> will usually fail - better way?
>         if exists(pid):
>             # was not able to terminate process so try kill
>             p.kill()
>             time.sleep(1)
>             if exists(pid):
>                 success = False
>     except psutil.NoSuchProcess:
>         pass
>     return success
>
> --
>
>
>
>

-- 



Reply via email to