【发布时间】:2012-11-27 09:31:17
【问题描述】:
所以我在 dotcloud 上运行一个烧瓶 python 应用程序,我基本上是在尝试散列密码(使用 hashlib.sha512;盐是 uuid.uuid4().bytes)。
user_dict['salt'] = uuid.uuid4().bytes
print_stderr(user_dict['salt'])
print_stderr(hashlib.sha512(user_dict['pwd'] + user_dict['salt']))
user_dict['pwd'] = hashlib.sha512(user_dict['pwd'] + user_dict['salt']).digest()
print_stderr(user_dict['pwd'])
即使在 dotcloud 上的 python 解释器中,这一切都可以正常工作,但是当我在服务器上实际运行代码时,它会崩溃(或者,客户端获取 HTTP 500 代码,但 dotcloud 日志刚刚关闭)。
我可以判断哪些print 语句被执行,哪些不是,它在uuid.uuid4().bytes 行上崩溃。但是如果我用一个常量(例如“uehg83yydh”)替换它,它不会立即失败,而是在hashlib.sha512(...).digest() 行上。
您可能还注意到print_stderr 不是标准的python 函数。这是我用来让 dotcloud 从 python 打印东西的 hack(它打印到 stderr 而不是 stdout)。肯定有我不知道的更好的在 dotcloud 上进行调试的方法吗?
【问题讨论】:
-
你用的是什么版本的python?崩溃时是否有任何错误消息?在 /var/log/supervisor 中查找不同的日志文件。
-
我使用的是 2.7(python_version:dotcloud.yml 中的 v2.7)。 CLI 日志查看器中没有错误消息,它只是停止。但是在 uwsgi.log 文件中有一些 CLI 查看器没有显示的 strange characters。
-
您可以发布这些日志吗?您使用的是沙盒还是现场风味?
-
我正在使用沙箱进行开发。无论如何,这部分代码奇迹般地开始工作了。现在有一个新问题,但似乎更容易解决:pastebin.com/vyfn5hwu 似乎 uuid 或 hashlib(或两者)没有正确编码。