<p>rq-py3.4 non compatible avec rq-py2.7 en raison de la version du protocole pickle</p>

Créé le 3 nov. 2015  ·  4Commentaires  ·  Source: rq/rq

Je joue avec des travailleurs avec différentes versions de Python. L'un des écueils est la version du protocole pickle utilisée. Pour python3.4, rq utilise la version de protocole disponible la plus élevée (4) mais python2.7 ne comprend que jusqu'à 2. Cela peut être corrigé en utilisant une classe Job personnalisée et en forçant python3.4 à utiliser la version 2 du protocole, mais c'est plutôt gênant.
J'ai réussi à utiliser une classe Job personnalisée (en écrasant la méthode dumps) pour résoudre ce problème, mais l'exposer comme un indicateur pourrait être plus pratique.

Commentaire le plus utile

En passant, bien que pas particulièrement joli, cela semble fonctionner :

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

Au moins lorsque vous utilisez python 3.4 pour mettre le travail en file d'attente et 2.7 pour le lire.

Tous les 4 commentaires

:+1:

Il y a un problème pour implémenter un sérialiseur args/kwargs . Je pense que c'est la meilleure approche pour ce problème particulier :)

Voici un lien vers le problème que j'ai mentionné : https://github.com/nvie/rq/issues/369 . J'ai oublié de le joindre lorsque j'ai fermé ce problème, désolé.

En passant, bien que pas particulièrement joli, cela semble fonctionner :

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

Au moins lorsque vous utilisez python 3.4 pour mettre le travail en file d'attente et 2.7 pour le lire.

Cette page vous a été utile?
0 / 5 - 0 notes