簡體   English   中英

Python RQ與JavaScript排隊

[英]Python RQ queueing with JavaScript

我正在嘗試使用JavaScript將Python RQ的任務排隊。 為此,我只監視了RQ對Redis的作用。 特別是,它存儲了一個腌制列表,指示在哪里可以找到要運行的任務,包括輸入參數等。在這里,我使用RQ主頁上的示例。 當存儲以下字符串(腌制列表)時:

'\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\\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。

自己發現的。 Python的pickle輸出字符串實際上是二進制的,這是在Python中寫入和讀取文件的常用方法。 Javascript不喜歡這樣並“修復”它。 解決方案是Javascript的緩沖區。

> new Buffer('\x80\x85', 'binary')
<Buffer 80 85>

> new Buffer('\x80\x85')
<Buffer c2 80 c2 85>

只需將node_redis饋入緩沖區對象,序列化對象的“正確”表示將出現在redis中,並且rqworker可以正常工作。 請記住,“二進制”模式正在被棄用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM