|
View:
New views
3 Messages
—
Rating Filter:
Alert me
|
|
|
problems with Distributed Objects and PyObjCHi all,
Trying to use Distributed Objects to communicate between PyObjC-based processes on 10.5 and/or 10.6, but encountering various problems when passing Python values, as illustrated below. The production code currently only passes Python strings as arguments so I can work around these issues for now by ensuring I always wrap them as NSStrings, but it's going to create headaches if I start to use DO for more advanced IPC. Anyone any thoughts? (Including suggestions for alternative LAN- capable IPC options.) Thanks, Hamish ------- doserver.py ------- from Cocoa import * class Server(NSObject): def test(self, arg): print 'received:', arg return NSString.stringWithString_(u"ok") receiveport = NSSocketPort.alloc().initWithTCPPort_(8080) connection = NSConnection.connectionWithReceivePort_sendPort_(receiveport, None) server = Server.alloc().init() connection.setRootObject_(server) NSRunLoop.mainRunLoop().run() ------- doclient.py ------- from Cocoa import * sendport = NSSocketPort.alloc().initRemoteWithTCPPort_host_(8080, u"localhost") connection = NSConnection.connectionWithReceivePort_sendPort_(None, sendport) proxy = connection.rootProxy() try: print "reply", proxy.test(43) except Exception, e: print e # doclient.py fails: # ValueError: NSInvalidArgumentException - *** -encodeInt:forKey: only defined for abstract class. # Define -[NSConcretePortCoder encodeInt:forKey:]! print "reply", proxy.test(NSNumber.numberWithInt_(43)) # OK try: print "reply", proxy.test([]) # OK on 10.6 except Exception, e: print e # doclient.py fails on 10.5 # ValueError: NSInvalidArgumentException - PyObjC: Encoding python objects of type list is not supported print "reply", proxy.test(True) # OK print "reply", proxy.test(NSString.stringWithString_(u'hello')) # OK print "reply", proxy.test(u'hello') # OK on 10.5 # doserver.py fails on 10.6: # ValueError: NSInvalidArgumentException - -[OC_PythonUnicode initWithBytes:length:encoding:]: # unrecognized selector sent to instance 0x100261a80 -- Hamish Sanderson Production Workflow Developer Sun Branding Solutions Ltd Tel: +44(0)1274 200 700 www.s-brandingsolutions.com _______________________________________________ Pythonmac-SIG maillist - Pythonmac-SIG@... http://mail.python.org/mailman/listinfo/pythonmac-sig |
|
|
|
|
|
Re: problems with Distributed Objects and PyObjCHamish Sanderson wrote:
> Hi all, > > Trying to use Distributed Objects to communicate between PyObjC-based > processes on 10.5 and/or 10.6, but encountering various problems when > passing Python values, as illustrated below. The production code > currently only passes Python strings as arguments so I can work around > these issues for now by ensuring I always wrap them as NSStrings, but > it's going to create headaches if I start to use DO for more advanced IPC. > > Anyone any thoughts? (Including suggestions for alternative LAN-capable > IPC options.) Both ends are Python? If they are, maybe you should try Pyro (http://pyro.sourceforge.net). --irmen _______________________________________________ Pythonmac-SIG maillist - Pythonmac-SIG@... http://mail.python.org/mailman/listinfo/pythonmac-sig |
| Free embeddable forum powered by Nabble | Forum Help |