On 07:54 am, sank.dan...@gmail.com wrote:
I have a project in which various modules need to import a particular
module "util" which has the following content:
# util.py
class FooMaster(pb.Cacheable):
...
class FooSlave(pb.RemoteCache):
...
pb.setUnjellyableForClass(FooMaster, FooSlave)
Module "server" lives in the same directory as util and imports it like
this
# server.py
import util
Module clent lives in an entirely different directory and imports util
like
this
# client.py
import myproject.path.to.some.files.util as util
This leads to the infamous insecureJelly exception because the name of
the
FooMaster class winds up being different due to the different import
statements. Specifically, server's copy of pb registers it as
"util.FooMaster"
but client's copy registers it as
"myproject.path.to.some.files.util.FooMaster"
1. Is it a bug that pb cares about how something was imported when
registering unjellyable classes?
No. It's a bug in your application. ;)
2. If not, how am I supposed to work around this?
Always refer to modules in the same way. Never use relative imports.
3. The problem goes away if I use the long, fully qualified import
statement everywhere. Is that what I'm supposed to do?
Yep!
If you really had different classes on the client and the server
representing the same abstract entity then you could explicitly register
them as being related by registering them using a name instead of using
a class object. When you pass a class object, pb just computes that
name for you.
However, you don't really have different classes here: just differently
named copies of the same class. Consistently importing the class using
the correct, fully qualified package name will cause the classes to have
the same name (and, if you load the client and server in once process,
will cause only *one* copy of the module and class to be loaded, rather
than two) and fix the PB issue.
Jean-Paul
I read the howto and the on Stackoverflow question I could find
regarding
this issue. In both cases, it says to not define names in a main file
precisely to avoid this issue, but not what to do in my case.
Thank you for any advice.
--
Daniel Sank
Department of Physics
Broida Hall
University of California
Santa Barbara, CA 93117
(805)893-3899
_______________________________________________
Twisted-Python mailing list
Twisted-Python@twistedmatrix.com
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python