そのため、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 から印刷するために使用しているハックです (標準出力ではなく標準エラー出力に出力します)。確かに、私が気付いていない dotcloud でデバッグするためのより良い方法はありますか?