заранее спасибо :)Джанго и сельдерей: не удался рассол задача
У меня есть этот асинхронный сельдерей задача вызов:
update_solr.delay(id, context)
где идентификатор представляет собой целое число и контекст является Python ДИКТ.
Мое определение задачи выглядит следующим образом:
@task
def update_solr(id, context):
clip = Clip.objects.get(pk=id)
clip_serializer = SOLRClipSerializer(clip, context=context)
response = requests.post(url, data=clip_serializer.data)
где clip_serializer.data
является ДИКТ и url
является строка, представляющая URL.
Когда я пытаюсь вызвать update_solr.delay()
, я получаю эту ошибку:
PicklingError: Can't pickle <type 'instancemethod'>: attribute lookup __builtin__.instancemethod failed
Ни один из аргументов к задаче методы экземпляра, так что я запутался.
Когда код задачи запускается синхронно, нет ошибки.
Обновление: исправлено за комментарий о передаче pk вместо объекта.
Чтобы избежать условий гонки и уменьшить размер полезной нагрузки, лучше передать модель ПК, а не экземпляр модели. – AndrewS
Совершенно верно, но это не решает проблему. – hamsterdam
Что-то * внутри объектов - это метод экземпляра (то есть вы помещаете Object.foomethod в словарь или что-то подобное), в месте, где маринование не может его рассолить. –