[Zope] Error Value: can't pickle function objects
Alec Mitchell
apm13 at columbia.edu
Fri May 28 14:07:16 EDT 2004
On Friday 28 May 2004 10:15 am, Mohamed Lrhazi wrote:
> When I replace :
>
> self.domain = self.ddb.getDomain(REQUEST['YSURLARGS'][1])
> self.domainTitle=self.domain.getHTMLDomainName()
>
> with this:
>
> domain = self.ddb.getDomain(REQUEST['YSURLARGS'][1])
> self.domainTitle=domain.getHTMLDomainName()
>
> It works.
>
> "domain" above is an instance of a class called Domain, I defined it in a
> module that lives in /usr/local/zope/lib/python/YSDomain and that does not
> implement nor extend any Zope classes or interfaces...
>
> Why does instantiating such an object inside my zope application cause
> "can't pickle function objects" error?
By setting self.domain you are causing the 'domain' instance to be stored in
the ZODB, as an attribute of your persistent class. There is apparently some
aspect of that 'domain' instance which is not picklable. Unless you really
wanted to store/update an instance of that class in the ZODB as an attribute
of your Zope object every time you called index_html, the second method is
certainly best. Updating that attribute on every call could result in
tremendous database bloat. Actually, it seems pretty strange that you are
setting any instance attributes during the index_html call, which one
wouldn't normally expect to have any side effects.
Alec Mitchell
More information about the Zope
mailing list