1

UbuntuボックスでRabbitMQブローカーを使用してセロリでタスクを呼び出していますが、結果のバックエンドとしてRedisを使用してセットアップしています。タスクの結果は見つかりますが、""\x80\x02}q\x01(U\x06statusq\x02U\aSUCCESSq\x03U\ttracebackq\x04NU\x06resultq\x05}q\x06(X\x06\x00\x00 \x00result}q\a(X\x06\x00\x00\x00statusK\x01X\r\x00\x00\x00total_resultsM\xf4\x01X\a\x00\x00\x00matches]q\b(}q\t(X\ a\x00\x00\x00players]q\n(}q\x0b(X\a\x00\x00\x00hero_idK\x15X\n\x00\x00\x00account_idI4294967295\nX\x0b\x00\x00\x00player_slotK\x00u}q \x0c(X\a\x00\x00\x00hero_idK\x0cX\n\x00\x00\x00account_idI4294967295\nX\x0b\x00\x00\x00player_slotK\x01u}q\r(X\a\x00\x00\x00hero_idK\x1bX \n\x00\x00\x00account_i...."

私のデフォルトのセロリ エンコーディングは ASCII で、Redis のベース conf にエンコーディングが指定されていないようです。

utils.encoding.default_encoding()
'ascii'

このテキストを意味のあるものにするにはどうすればよいですか? これがどのようにエンコードされているかはわかりません。試してみるべき提案されたデコードはありますか?

4

1 に答える 1

3

結果は、デフォルトで utf-8 文字列に pickle 化されます ( task serializersを参照してください)。以下を使用してペイロードを手動で検査できます。

import pickle
s = "\x80\x02}q..."
obj = pickle.loads(s)
print obj

pickle多言語環境で操作していない限り、通常は問題ありません。その場合、JSON または msgpack が適切なソリューションです。

于 2013-10-02T04:03:17.367 に答える