我怎样才能将延迟的“扔”到反应堆中,以便在路上的某个地方处理它?
情况
我在 localhost 上运行了 2 个程序。
- 一个扭曲的 jsonrpc 服务 (localhost:30301)
- 一个扭曲的网络服务 (localhost:4000)
当有人连接到 webservice 时,它需要向 jsonrpc 服务发送查询,等待它返回结果,然后在用户的 web 浏览器中显示结果(返回 jsonrpc 调用的值)。
我似乎无法弄清楚如何返回延迟的 jsonrpc 调用的值。当我使用浏览器访问 Web 服务时,我收到 HTML 500 错误代码(未返回任何字节)和值:< Deferred at 0x3577b48 >。
它返回延迟对象而不是回调的实际值。
在询问之前已经环顾了几个小时并尝试了很多不同的变化。
from txjsonrpc.web.jsonrpc import Proxy
from twisted.web import resource
from twisted.web.server import Site
from twisted.internet import reactor
class Rpc():
def __init__(self, child):
self._proxy = Proxy('http://127.0.0.1:30301/%s' % child)
def execute(self, function):
return self._proxy.callRemote(function)
class Server(resource.Resource):
isLeaf = True
def render_GET(self, request):
rpc = Rpc('test').execute('test')
def test(result):
return '<h1>%s</h1>' % result
rpc.addCallback(test)
return rpc
site = Site(Server())
reactor.listenTCP(4000, site)
print 'Running'
reactor.run()