Python 2.5.1でcherrypy 3.2.0サーバを実行していますが、数日おきにUIからの指示が殺されるまで再開始しました: -cherrypy/dev/urandom(または同等のもの)が見つかりません - エラー
[29/Mar/2012:06:37:57] HTTP Traceback (most recent call last):
File "/usr/lib/python2.5/site-packages/CherryPy-3.2.0-py2.5.egg/cherrypy/_cprequest.py", line 636, in respond
File "/usr/lib/python2.5/site-packages/CherryPy-3.2.0-py2.5.egg/cherrypy/_cprequest.py", line 97, in run
File "/usr/lib/python2.5/site-packages/CherryPy-3.2.0-py2.5.egg/cherrypy/_cprequest.py", line 57, in __call__
File "/usr/lib/python2.5/site-packages/CherryPy-3.2.0-py2.5.egg/cherrypy/lib/sessions.py", line 757, in init
File "/usr/lib/python2.5/site-packages/CherryPy-3.2.0-py2.5.egg/cherrypy/lib/sessions.py", line 162, in __init__
File "/usr/lib/python2.5/site-packages/CherryPy-3.2.0-py2.5.egg/cherrypy/lib/sessions.py", line 190, in _regenerate
File "/usr/lib/python2.5/site-packages/CherryPy-3.2.0-py2.5.egg/cherrypy/lib/sessions.py", line 204, in generate_id
File "/usr/lib/python2.5/site-packages/CherryPy-3.2.0-py2.5.egg/cherrypy/_cpcompat.py", line 264, in random20
File "/usr/lib/python2.5/os.py", line 733, in urandom
NotImplementedError: /dev/urandom (or equivalent) not found
_cpcompat.py
は/dev/urandom
を読み取ることができませんが、それに戻って落下していないようrandom.random
上のフォールバックはケースCherryPyに中があることを示唆しているコードの一部を以下ました。
try:
os.urandom(20)
import binascii
def random20():
return binascii.hexlify(os.urandom(20)).decode('ascii')
except (AttributeError, NotImplementedError):
import random
# os.urandom not available until Python 2.4. Fall back to random.random.
def random20():
return sha('%s' % random.random()).hexdigest()
次のコンテキスト内の関連するos.py
からコードスニペットです: - CherryPyには/dev/urandom
を読み取ることができません、次のコードスニペットが正常に動作していると同時に
if not _exists("urandom"):
def urandom(n):
"""urandom(n) -> str
Return a string of n random bytes suitable for cryptographic use.
"""
try:
_urandomfd = open("/dev/urandom", O_RDONLY)
except (OSError, IOError):
raise NotImplementedError("/dev/urandom (or equivalent) not found")
bytes = ""
while len(bytes) < n:
bytes += read(_urandomfd, n - len(bytes))
close(_urandomfd)
return bytes
: -
python -c "import os;fd = open('/dev/urandom', 'r');print fd.read(5);fd.close()"
私は2つの質問があります: -
- なぜCherryPyに
os.py
はNotImplementedError
を上げているとき_cpcompact.py
は一部を除いて実行していないのはなぜでは、/ dev/urandomの - からランダムビットを読み取ることができていないときは、実装エラーを投げます。
は 'を行いますpython -c "import os; print os.urandom(5) "'仕事? – tMC
悲しいことですが、cherrypyは/ dev/urandomは実装されていません! – haltTm
おそらく許可がどこかで壊れていますか? – sdolan