Update installation docs with more details on zeromq version support.
Update compatibility notes regarding ZeroMQ versions and add detail about how this is determined by pyzmq dependency.
Add debug_gc option
Add ipython shell command
Feature/watched file handler
- This stream class emulates the behavior of Python's WatchedFileHandler logger utility, where if the log file is removed/renamed by an external log rotation utility, the file will be reopened. This is very useful for situations where circus is running a bunch of different processes with different logging implementations and one external log rotation tool is used so that all the different logging implementations don't have to worry about log rotation. - refactored common FileStream functionality into a base class that is now shared between FileStream and WatchedFileStream. - Allow users to specify WatchedFileStream in config files without a fully qualified name. - Suppressed the flake8 warning for an unused import as WatchedFileStream needs to be in the globals dict - Added WatchedFileStream tests in that mirror what is tested for FileStream, plus one that tests the logrotate case - Added docs for WatchedFileStream - switched loggers from using FileHandler to WatchedFileHandler. This change makes a seamless switch to using WatchedFileHandler instead of FileHandler for the main logger and the builtin plugins. If a system log rotation utility moves the circus log, circus will continue to function fine when logging. The only downside is a slight performance hit as WatchedFileHandler stats the log file on each log call, but it seems like a good tradeoff for a systems tool like circus to help ensure that the circus logs never cause problems.
- If the process exited due to a signal, set the exit_code to the -<SIGNAL> value to match the behavior of the Popen.returncode attribute that is used in the other reap message. This allows plugins that monitor the exit of processes to distinguish between an actual return code > 0 and an exit due to a signal (i.e. a segfault, SIGILL, SIGABRT, etc.)
Add call to 'logging.basicConfig()' in __init__.py. Fix #722.
Add systemd example to the deployment documentation for ops
Make sure we don't add extra EOLs - fixes #711
new feature for setting the ipc endpoint socket owner
add a sequential option to the reload command for #646
- Added a new config option called 'endpoint_owner' that must be set to a unix user name - When the endpoint is an ipc connection and endpoint_owner is set, then the ipc socket file will be chown'd to the endpoint_owner user value. This allows circus to run as root but allow certain processes to send commands to it without having to run as root.
Circus-top : delete pids that don't have recent stats
Feature/add rlimit fixes
- add special logic for validation rlimit_* keys when used from the add command that matches the way rimit_* options are processed via the conf file - added a test for the rlimit_* validations
An explicit test is needed because the restart() command is a kind of stop() command. The start after the stop is made (externally) by circusd for plenty of reasons. So the restart() command is over before the arbiter is really restarted. So the classic synchronized decorator is released too early. see #714