How to modify a program while it's running?

Paul Rubin http
Wed Dec 17 06:47:11 CET 2008


Joe Strout <joe at strout.net> writes:
> So I'd like to restructure my app so that it can stay running and stay
> logged in, yet I can still update and reload at least most of the
> code.  But I'm not sure what's the best way to do this.  Should I move
> the reloadable code into its own module, and then when I give my bot a
> "reload" command, have it call reload on that module?  Will that work,
> and is there a better way?

If you are on Linux, an alternative might be to start a new version of
your program in a separate process, then transfer the open connections
from the old process to the new ones through Unix domain sockets.  The
SCM_RIGHTS message lets you pass file descriptors around between
processes.  I've never tried this myself but have always wanted to.  I
think someone submitted a patch for Python's socket module a year or
so ago to support that operation, but I don't know if it was accepted.
You could always apply it yourself.

Generally, trying to hot-patch code is messy and dangerous even in
systems that were designed for it.



More information about the Python-list mailing list