I am attempting to use the python-daemon library which seemed to me to be the safest way to create a Daemon without forgetting anything. The documentation is quite poor, being just PEP 3143.
On the other hand, I have found a lot of links to Sander Marechal's A simple unix/linux daemon in Python. This looks to be a nicer solution or though I have not yet attempted to use it.
Edit: I have used Sander Marechal's solution and it seems to work nicely.
So what is the de facto way in the Python community to create a Daemon, is it one of these libraries, or simply doing it all yourself (forking twice etc.)?
Also, you would think that any library with a PEP would be a far better choice since it is closer to a comprehensive way of creating a Daemon (or at least a more standard way) than any other solution. So what is the deal with this python-daemon
package, would it ever be included in the standard library?
I went with Sander Marechal's A simple unix/linux daemon in Python, it is simple, and you work with it by creating a subclass and overriding the run()
method, which feels a very natural way to do things (rather than the with context:
approach of the python-daemon module.
Twisted comes with twistd.
http://twistedmatrix.com/documents/current/core/howto/basics.html
You can wrap your application as a plugin for twistd.
For making a daemon program that will work correctly with the various runners in operating systems (e.g. init
, systemd
, launchd
), the python-daemon
library is the de facto way to write just the daemon part and let the operating system do the rest of the job correctly.
来源:https://stackoverflow.com/questions/4790876/what-is-the-de-facto-library-for-creating-python-daemons