Ich spiele mit Arbeitern mit verschiedenen Python-Versionen herum. Eine der Fallstricke ist die verwendete Pickle-Protokollversion. Für Python3.4 verwendet rq die höchste verfügbare Protokollversion (4), aber Python2.7 versteht nur bis zu 2. Dies kann behoben werden, indem eine benutzerdefinierte Job-Klasse verwendet wird und Python3.4 gezwungen wird, die Protokollversion 2 zu verwenden, aber es ist ziemlich umständlich.
Ich habe es geschafft, eine benutzerdefinierte Job-Klasse zu verwenden (die Dumps-Methode überschrieben), um dieses Problem zu beheben, aber es könnte bequemer sein, dies als Flag bereitzustellen.
:+1:
Es gibt ein Problem beim Implementieren eines anpassbaren args/kwargs
Serializers. Ich denke, das ist der bessere Ansatz für dieses spezielle Problem :)
Hier ist ein Link zu dem von mir erwähnten Problem: https://github.com/nvie/rq/issues/369 . Ich habe vergessen, es anzuhängen, als ich dieses Problem geschlossen habe, sorry.
Als Randnotiz, obwohl es nicht besonders hübsch ist, scheint dies tatsächlich zu funktionieren:
import pickle
pickle.HIGHEST_PROTOCOL = 2
from rq import Queue
# from here on RQ will use pickle protocol 2
Zumindest wenn Python 3.4 verwendet wird, um den Job in die Warteschlange zu stellen, und 2.7, um ihn zu lesen.
Hilfreichster Kommentar
Als Randnotiz, obwohl es nicht besonders hübsch ist, scheint dies tatsächlich zu funktionieren:
Zumindest wenn Python 3.4 verwendet wird, um den Job in die Warteschlange zu stellen, und 2.7, um ihn zu lesen.