hi,all:<br clear="all">I developed a web app in diango and a remote service in twisted, and I want to invoke the twisted remote method in django web.<div>example:<div><br><div>the remote service code :</div><div><br></div>
<div><div>class Echoer(pb.Root):</div><div>    def remote_echo(self, task):</div><div>    <span class="Apple-tab-span" style="white-space:pre">        </span>  </div><div>        print &#39;echoing:&#39;, task</div><div>        </div>
<div>        return task</div><div><br></div><div>if __name__ == &#39;__main__&#39;:</div><div>    reactor.listenTCP(8789, pb.PBServerFactory(Echoer()))</div><div>    reactor.run()</div><div><br></div><div>-------------------------------------------------------------------------------------------------------------</div>
<div>and the djiango views.py code :</div><div><br></div><div>       def register_task(requst):</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>&quot;&quot;&quot;register the task&quot;&quot;&quot;</div>
<div>        .................</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>factory = pb.PBClientFactory()</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>reactor.connectTCP(&quot;localhost&quot;, 8789, factory)</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>d = factory.getRootObject()</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>d.addCallback(lambda object: object.callRemote(&quot;echo&quot;, task))</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>d.addCallback(lambda echo: &#39;server echoed: &#39;+echo[0]+str(echo[1]))</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>d.addErrback(lambda reason: &#39;error: &#39;+str(reason.value))</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>d.addCallback(util.println)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>d.addCallback(lambda _: reactor.stop())</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>reactor.run()</div>
<div>        ..........................</div><div>        return HttpResponseRedirect(&#39;/push_task/&#39;) # Redirect after POST  </div><div><br></div><div>-------------------------------------------------------------------------------------------------------------</div>
<div>       </div><div>but when I post a request to django web app ,a exception display:</div><div><div>Traceback (most recent call last):</div><div>  File &quot;C:\Python25\Lib\site-packages\twisted\internet\base.py&quot;, line 374, in fi</div>
<div>reEvent</div><div>    DeferredList(beforeResults).addCallback(self._continueFiring)</div><div>  File &quot;C:\Python25\Lib\site-packages\twisted\internet\defer.py&quot;, line 195, in a</div><div>ddCallback</div><div>
    callbackKeywords=kw)</div><div>  File &quot;C:\Python25\Lib\site-packages\twisted\internet\defer.py&quot;, line 186, in a</div><div>ddCallbacks</div><div>    self._runCallbacks()</div><div>  File &quot;C:\Python25\Lib\site-packages\twisted\internet\defer.py&quot;, line 328, in _</div>
<div>runCallbacks</div><div>    self.result = callback(self.result, *args, **kw)</div><div>--- &lt;exception caught here&gt; ---</div><div>  File &quot;C:\Python25\Lib\site-packages\twisted\internet\base.py&quot;, line 387, in _c</div>
<div>ontinueFiring</div><div>    callable(*args, **kwargs)</div><div>  File &quot;C:\Python25\Lib\site-packages\twisted\internet\base.py&quot;, line 1123, in _</div><div>reallyStartRunning</div><div>    self._handleSignals()</div>
<div>  File &quot;C:\Python25\Lib\site-packages\twisted\internet\base.py&quot;, line 1068, in _</div><div>handleSignals</div><div>    signal.signal(signal.SIGINT, self.sigInt)</div><div>exceptions.ValueError: signal only works in main thread</div>
<div>--------------------------------------------------------------------------------------------------------------</div><div><br></div><div>so ,How I correctly invoke the remote method?</div></div><div>-- <br>Boern Parx<br>

</div></div></div></div>