10x BTW: why the "threaded" is the default mode rather than the "forking" mode?
On Tuesday, October 9, 2012 1:11:47 PM UTC+2, Tomer Filiba wrote: > > use the forking server instead of the threaded server. > threads and signals don't mix too well together in python, so the > interpreter blocks it. > > > ----------------------------------------------------------------- > > *Tomer Filiba* > tomerfiliba.com <http://www.facebook.com/tomerfiliba> > <http://il.linkedin.com/in/tomerfiliba> > > > > On Tue, Oct 9, 2012 at 1:08 PM, shay berman <[email protected]<javascript:> > > wrote: > >> Hi >> >> How to use signal.signal function via rpyc? >> When I use it fail with error : ''signal only works in main thread" >> >> here is an example : >> >> *------------------------------------------* >> *import rpyc* >> *r = rpyc.classic.connect('remote_host')* >> *r_signal = r.modules.signal* >> *r_signal.signal(r_signal.SIGCHLD, r_signal.SIG_DFL) >> * >> * >> --------------------------------------------------------------------------- >> * >> *ValueError Traceback (most recent call >> last)* >> */home/bshay/git/hostattachment/_meta/tests/xavi/hak_xavi_tests/tests_pool/<ipython >> >> console> in <module>()* >> */var/tmp/xavi-xpyv/lib/python2.7/site-packages/rpyc-3.0.7-py2.7.egg/rpyc/core/netref.pyc >> >> in __call__(_self, *args, **kwargs)* >> * 121 def __call__(_self, *args, **kwargs):* >> * 122 kwargs = tuple(kwargs.items())* >> *--> 123 return syncreq(_self, consts.HANDLE_CALL, args, >> kwargs)* >> * 124 __call__.__doc__ = doc* >> * 125 return __call__* >> * >> * >> */var/tmp/xavi-xpyv/lib/python2.7/site-packages/rpyc-3.0.7-py2.7.egg/rpyc/core/netref.pyc >> >> in syncreq(proxy, handler, *args)* >> * 43 conn = object.__getattribute__(proxy, "____conn__")* >> * 44 oid = object.__getattribute__(proxy, "____oid__")* >> *---> 45 return conn().sync_request(handler, oid, *args)* >> * 46 * >> * 47 def asyncreq(proxy, handler, *args):* >> * >> * >> */var/tmp/xavi-xpyv/lib/python2.7/site-packages/rpyc-3.0.7-py2.7.egg/rpyc/core/protocol.pyc >> >> in sync_request(self, handler, *args)* >> * 340 isexc, obj = self._sync_replies.pop(seq)* >> * 341 if isexc:* >> *--> 342 raise obj* >> * 343 else:* >> * 344 return obj* >> * >> * >> *ValueError: signal only works in main thread* >> * >> * >> * >> * >> > >
