JavaScript を使用して Python RQ のタスクをキューに入れようとしています。そのために、RQ が Redis で何をするかを監視しました。特に、入力引数などを含む、実行するタスクを見つける場所を示すピクル リストを格納します。ここでは、RQ のホームページにある例を使用しています。次の文字列 (pickled リスト) を格納する場合:
'\x80\x02(X\x1c\x00\x00\x00my_module.count_words_at_urlq\x01NU\x0fhttp://nvie.comq\x02\x85q\x03}q\x04tq\x05.'
JavaScript では、リテラル\x80
と\x85
. \xc2\x80
それらをandに置き換えますが、\xc2\x85
この動作を停止する理由と方法を理解できません。残りの文字列は、期待どおり Redis に送られます。追加のリテラルは、rqworker、具体的には pickle が正しく機能するのを妨げます。
> encodeURI('\x80\x02(X\x1c\x00\x00\x00my_module.count_words_at_urlq\x01NU\x0fhttp://nvie.comq\x02\x85q\x03}q\x04tq\x05.')
'%C2%80%02(X%1C%00%00%00my_module.count_words_at_urlq%01NU%0Fhttp://nvie.comq%02%C2%85q%03%7Dq%04tq%05.'
> decodeURI('\x80\x02(X\x1c\x00\x00\x00my_module.count_words_at_urlq\x01NU\x0fhttp://nvie.comq\x02\x85q\x03}q\x04tq\x05.')
' \u0002(X\u001c\u0000\u0000\u0000my_module.count_words_at_urlq\u0001NU\u000fhttp://nvie.comq \u0002q\u0003}q\u0004tq\u0005.'
node と node_redis を使用しています。