When the signal.siginterrupt call is available it can be used to make
interrupted system calls (errno == EINTR) retry transparently whenever
they have not caused any side effects yet (e.g. no data read/written).
It should make shutdown more graceful.
Patch by Jonas Borgström
We already import setuptools in setup.py so its not necessary
to explicitly list it. Also, it apparently prevents users from
upgrading using distribute.
Thanks to Jannis Leidel for the report.
Web applications use random numbers for things like sessions, if
we don't reseed then each worker will generate the same sequence
of random numbers which can lead to security concerns.
Thanks to Jonas Borgström for the patch.
An out of file descriptors error was causing the async acceptor loops to
die. The notification process was unaffected so the workers didn't die.
Async workers hitting an error in the acceptor now kill themselves and
rely on the arbiter to restart a new worker in their stead.
Reported by Sergey Shepelev. I changed his patch slightly because of the
man page language. As I read things, the close on exec flag is separate
from the F_SETFL flags.