Хорошо, для тех, кому это интересно, мне удалось засечь HttpRequest
и WSGIRequest
объекты.Во-первых, вам понадобится обезопасить как минимум один класс WSGIRequest
(и, вероятно, HttpRequest
), чтобы он предоставил метод __reduce__(self)
.Вы бы хотели что-то вроде:
WSGIRequest.__reduce__= __reduce__
Метод reduce
может выглядеть следующим образом:
def __reduce__(self):
meta = dict([(k,self.META[k]) for k in METACOPY if k in self.META and isinstance(self.META[k], str)])
return (HttpRequest, (), {'META':meta, 'POST':self.POST, 'GET':self.GET, 'user':self.user, 'path':self.path})
, где METACOPY
- это список ключей, которые вы хотите сохранить, например.['REMOTE_ADDR']
Я считаю, что это удобнее и прозрачнее, чем метод полезной нагрузки (который я использовал ранее с сельдереем).