मैं पाइथन 2.5.1 के साथ एक चेरीपी 3.2.0 सर्वर चला रहा हूं, जो यूआई से किसी भी निर्देश पर हर त्रुटि को तब तक देता है जब तक यह मारे नहीं जाता है और फिर से शुरू कर दिया: -चेरीपी/देव/यूरैंडम (या समकक्ष) नहीं मिला - त्रुटि
[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
है निम्नलिखित कोड जिससे पता चलता है मामले cherrypy में random.random
पर एक fallback /dev/urandom
को पढ़ने में सक्षम है है कि वहाँ नहीं है, लेकिन उस पर वापस गिरने जा करने के लिए प्रतीत नहीं होता है का टुकड़ा।
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
से कोड का टुकड़ा, संदर्भ में प्रासंगिक है: -
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
एक ही समय जब cherrypy
/dev/urandom
पढ़ने में सक्षम नहीं है पर, निम्नलिखित कोड का टुकड़ा ठीक काम कर रहा है: -
python -c "import os;fd = open('/dev/urandom', 'r');print fd.read(5);fd.close()"
मैं दो प्रश्न हैं: -
- क्यों है cherrypy लागू नहीं किया त्रुटि फेंक जब मैं/dev/urandom
- से यादृच्छिक बिट्स को पढ़ने के लिए कर रहा हूँ क्यों
_cpcompact.py
जबos.py
NotImplementedError
बढ़ा रहा है भाग को छोड़कर नहीं क्रियान्वित कर रहा है।
करता है ' पायथन-सी "आयात ओएस; प्रिंट os.urandom (5) "' काम? – tMC
दुख की बात है, यह करता है, जबकि चेरीपी कहते हैं/dev/urandom लागू नहीं किया गया है! – haltTm
शायद अनुमति कहीं खराब हो गई है? – sdolan