NEWS.txt 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. 0.9
  2. ====
  3. - Remove the unnecessary dependency on eventlet.jsonhttp. This makes spawning work with eventlet 0.9, which removed jsonhttp and put it in another library. (fzzzy)
  4. - Preserve the order of sys.path. (verterok)
  5. - Work around a python deadlock bug with forked child processes (statik)
  6. 0.9.1: Fix news file to move entries from 0.8.13 to 0.9 since I decided to call this release 0.9.
  7. 0.9.2: Fix a small typo in the preserve order of sys.path patch from 0.9 that would cause spawning to crash. (schmir)
  8. 0.9.3:
  9. - Add the ability to disallow HTTP Keepalive via --no-keepalive
  10. - Enable "progressive" spawning and reaping of children processes; in
  11. effect the parent will receive a signal from children about their
  12. impending death and the parent will spin up a new child while the old one
  13. expires
  14. - SIGHUP to the parent will cause it to cycle children without itself dying
  15. 0.9.4:
  16. - Script for spawning renamed from "spawn" to "spawning" to avoid confusion
  17. - Use O_APPEND when opening files when daemonizing
  18. - Debian/Ubuntu init.d scripts using start-stop-daemon
  19. - spawning.util module added to house methods that don't belong elsewhere
  20. - Update Spawning to use newer Eventlet API calls
  21. - Properly handle errors when calling `setproctitle`
  22. - Allow optional `eventlet.backdoor` bound to localhost
  23. - Operate more cleanly with Eventlet's websockets support with changes to
  24. eventlet.tpool integration
  25. - Avoid passing certain objects through `eventlet.tpool.Proxy` when using
  26. threads for a performance gain
  27. - Prevent leaking pipes when handling children processes
  28. 0.9.5:
  29. - Fixed a number of issues with reloading of Spawning children
  30. - Added /_sysinfo to provide information about the machine
  31. - Added health page that listens on a different port from the controller,
  32. providing HTML and JSON formatted information about children
  33. - Introduced a basic logfile analyzer for processsing Spawning logs for
  34. further information not provided by the health page
  35. 0.8
  36. ====
  37. Fixed a problem where eventlet monkeypatching was inappropriately installed in child processes which use threads. This would result in certain operations (primarily DNS lookup operations) resulting in a greenlet "cannot switch to another thread" exception.
  38. Changed the paste factory to use 10 worker threads by default, to match the paste default. Previously if the paste ini file did not mention how many worker threads to use, spawning would default to 0 and switch into cooperative, non-blocking mode.
  39. Added a deadman timeout to child processes which have been told to exit and are waiting for outstanding requests to finish. If the timeout expires before all requests have completed, we assume the process is hung and kill -9 it. The default timeout is 120 seconds.
  40. If an i/o child process dies with an exit code other than 0, the controller decides something must have gone horribly wrong and restarts all of the children.
  41. 0.8.1: Fix a bug where the reloader didn't work with paster serve.
  42. 0.8.2: In the svn reloader, watch both spawning's directory and the directory of the wsgi application we are serving. Also, fix the django_factory which was broken by 0.8.
  43. 0.8.3: For all svn repositories the svn reloader is watching, also watch any svn:externals repositories contained therein.
  44. 0.8.4: Fixed a bug where the controller process dying unexpectedly (such as from a kill -9) would cause the children to have an exception but then keep running forever, preventing any other processes from using the ports again in the future.
  45. 0.8.5: Fixed a bug in the svn reloader where files that svn reported as 'not under version control' would cause the reloader to crash and exit immediately. I now use svn's exit code instead of sniffing svn's output, which should also help avoid problems for anyone who is using a localized copy of svn, or if svn ever changes the content of these messages.
  46. 0.8.6: Fix a file descriptor leak that occurred when the controller reloaded. If your code changed enough times over the lifetime of the server (thousands of times) it would eventually run out of file descriptors and refuse to start up. Now the number of file descriptors stays constant no matter how many times the server restarts.
  47. 0.8.7:
  48. - In the svn reloader process, check to see if the controller is still alive, and if not, just exit.
  49. - Don't hold on to the web port at all in the reloader_svn process.
  50. - Add an exponential backoff to the controller's "panic" restart. Before spawning would restart as fast as possible; now it backs off the time between restarts.
  51. - If we can't import the wsgi app, panic.
  52. - If we can't fork a child process (out of memory), panic.
  53. 0.8.8:
  54. - Added --access-log-file command line option to allow writing access logs to someplace other than stdout. Useful for redirecting to /dev/null for speed
  55. - Correctly extract the child's exit code and clean up the logging of child exit events.
  56. - Add coverage gathering using figleaf if the --coverage command line option is given. When gathering coverage, the figleaf report can be downloaded from the /_coverage url.
  57. - Add a --max-memory option to limit the total amount of memory spawning will use. If this is exceeded a SIGHUP will be sent to the controller causing the children to restart.
  58. - Add a --max-age option to limit the total amount of time a spawning child is allowed to run. After the time limit is exceeded a SIGHUP will be sent to the controller to cause the children to restart.
  59. - Instead of just passing the PYTHONPATH environment variable through to the children, construct the PYTHONPATH from the contents of sys.path.
  60. - Instead of just trying to run 'spawn' with /usr/bin/env when restarting, just run sys.executable -m spawning.spawning_controller, making it more likely that the controller will run correctly when restarting.
  61. - Add a --verbose option and change the default startup procedure to not log the detailed dictionary of configuration information.
  62. 0.8.9: Minor release which provides compatibility with running servers which are using 0.8.7. With 0.8.8, any running servers which are upgraded from 0.8.7->0.8.8 will crash with a KeyError and need to be restarted manually.
  63. 0.8.10: When spawning starts up, add the current working directory to sys.path if it is not already there. Also, when calculating the PYTHONPATH to give to the child from sys.path, remove any path which does not exist, preventing setuptools "DistributionNotFound" errors.
  64. 0.8.11:
  65. - Added Python 2.4 compatibility. (kiorky)
  66. - Added license headers to all source files. (statik)
  67. - Print exceptions to stderr instead of stdout. (lericson)
  68. - Don't assume every OSError the controller process gets is EINTR. (lericson)
  69. - Added simple daemonizing support. (lericson)
  70. - Added an OpenRC init script. (lericson)
  71. - Added an explicit manifest. (lericson)
  72. 0.8.12:
  73. - Remove the processpool implementation added in 0.7 because an equivalent setup can be achieved using controller processes and 1 thread; now we can just talk about the 'number of processes' and 'number of threads' instead of having two levels of different kind of processes when using the processpool. (fzzzy)
  74. - Minor release to fix the explicit manifest and OpenRC init script added in the last release. (lericson)
  75. - When running under 2.6 we no longer produce a deprecation warning about the removal of the sets module. (fzzzy)
  76. 0.7
  77. ====
  78. Added django_factory.
  79. Add an optional worker processpool which can be used as an equivalent to the worker threadpool.
  80. Added command-line script to launch a wsgi application, 'spawn'.
  81. spawn mymodule.my_wsgi_app