<p>rq-py3.4 несовместим с rq-py2.7 из-за версии протокола pickle</p>

Созданный на 3 нояб. 2015  ·  4Комментарии  ·  Источник: rq/rq

Я играю с воркерами с разными версиями Python. Одна из ловушек - используемая версия протокола pickle. Для python3.4 rq использует самую высокую доступную версию протокола (4), но python2.7 понимает только до 2. Это можно исправить, используя настраиваемый класс Job и заставляя python3.4 использовать протокол версии 2, но это довольно неудобно.
Мне удалось использовать настраиваемый класс Job (перезаписывающий метод дампа), чтобы решить эту проблему, но использование его в качестве флага могло бы быть более удобным.

Самый полезный комментарий

В качестве побочного примечания, хотя это не особенно красиво, это, похоже, действительно работает:

import pickle
pickle.HIGHEST_PROTOCOL = 2
from rq import Queue 
# from here on RQ will use pickle protocol 2

По крайней мере, при использовании python 3.4 для постановки задания в очередь и 2.7 для его чтения.

Все 4 Комментарий

: +1:

Возникла проблема с реализацией настраиваемого сериализатора args/kwargs . Я думаю, что это лучший подход для этой конкретной проблемы :)

Вот ссылка на упомянутую мной проблему: https://github.com/nvie/rq/issues/369 . Я забыл прикрепить его, когда закрыл этот выпуск, извините.

В качестве побочного примечания, хотя это не особенно красиво, это, похоже, действительно работает:

import pickle
pickle.HIGHEST_PROTOCOL = 2
from rq import Queue 
# from here on RQ will use pickle protocol 2

По крайней мере, при использовании python 3.4 для постановки задания в очередь и 2.7 для его чтения.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги