From 974698671a750fae9c8c24c8b2efc14e6842906a Mon Sep 17 00:00:00 2001 From: Alex Robbins Date: Mon, 14 Mar 2011 21:38:35 -0500 Subject: [PATCH] Moved the random seed method into a function. Added a try/except block to catch NotImplementedErrors for platforms that don't support urandom. --- gunicorn/util.py | 7 +++++++ gunicorn/workers/base.py | 3 +-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/gunicorn/util.py b/gunicorn/util.py index bd63f9e0..bef4b935 100644 --- a/gunicorn/util.py +++ b/gunicorn/util.py @@ -14,6 +14,7 @@ except MemoryError: import fcntl import os import pkg_resources +import random import resource import socket import sys @@ -287,3 +288,9 @@ def daemonize(): os.open(REDIRECT_TO, os.O_RDWR) os.dup2(0, 1) os.dup2(0, 2) + +def seed(): + try: + random.seed(os.urandom(64)) + except NotImplementedError: + random.seed(random.random()) diff --git a/gunicorn/workers/base.py b/gunicorn/workers/base.py index 296d478a..754a8bda 100644 --- a/gunicorn/workers/base.py +++ b/gunicorn/workers/base.py @@ -6,7 +6,6 @@ import logging import os -import random import signal import sys import traceback @@ -83,7 +82,7 @@ class Worker(object): util.set_owner_process(self.cfg.uid, self.cfg.gid) # Reseed the random number generator - random.seed() + util.seed() # For waking ourselves up self.PIPE = os.pipe()