Main thing to note is the app.py module, which is basically done and
includes all the code to run an application, including the two
commands: ginkgo, from before, and ginkgoctl, which provides service
management given a target (config or service name), a pidfile, or a
pid. You can call start, stop, restart, reload, and introducing:
status.
Anyway, that module includes a first, rough pass at the Process
implementation. Everything else in there is pretty much done. Rather
nice not having python-daemon around. Everything is so nice and tidy!
https://github.com/progrium/ginkgo/blob/246c997e673250cf930f39a724ede9140bd698f0/ginkgo/app.py
A little bit of code was borrowed from MIT licensed project pistil
(extracted from gunicorn), including the Pidfile class in util.
Also, we found a bug in which you could not use "is None" against
setting values through the descriptor because the SettingProxy cannot
fake object id. After long discussion, Chad Selph suggested just
making it an explicit option. So now by default you don't get a
SettingProxy object. You have to explicitly set monitored=True in
Setting, which will give you a SettingProxy that will have a .changed
property, but will not work in `is` comparisons, unless you use .value
(added to the proxy for convenience in that case).