【问题标题】:Call web2py service from other web2py service从其他 web2py 服务调用 web2py 服务
【发布时间】:2014-09-27 18:27:16
【问题描述】:

我有一个控制器,其中有许多服务。在某些情况下,我想从另一项服务中调用一项服务。像这样的:

@service.json
@service.jsonrpc
def addme(text,localeid=1):
    return db.mes.insert(me=text,locale=localeid)



@service.json
@service.jsonrpc
def addexmelink(exidentifier,metext):
    meidentifier=addme(metext)
    return db.exmelinker.insert(meid=meidentifier,exid=exidentifier)

我试过了,但它不起作用。我收到此错误:TypeError: 'NoneType' object is not callable。但我也观察到addme 被调用并且记录被插入,但它返回数据类型为Reference 的数据,这导致了一些问题。 请帮我解决这个问题。

【问题讨论】:

  • 您能解释一下您是如何调用这些函数的以及发生了什么(例如,是否有异常)?
  • @Anthony:我刚刚编辑了问题以包含原始服务代码。
  • 你能显示完整的回溯吗?如果你这样做db.exmelinker.insert(meid=long(meidentifier), exid=exidentifier) 会发生什么?如果您从 shell 而不是通过 RPC 调用这些函数,它会起作用吗?
  • @Anthony:当我这样做时它起作用了:return long(db.exmelinker.insert(meid=meidentifier,exid=exidentifier))
  • 我明白了,问题在于 addexmelink 返回的是 Reference,而不是 addme。无论如何,我认为这不应该是一个问题——Reference 对象不应该对 JSON 序列化程序造成任何问题。我仍然有兴趣查看完整的回溯(以及调用它的方法)以了解发生了什么。

标签: web2py


【解决方案1】:

在安东尼的建议下我这样做了:

@service.json
@service.jsonrpc
def addexmelink(exidentifier,metext):
    meidentifier=addme(metext)
    return long(db.exmelinker.insert(meid=meidentifier,exid=exidentifier))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-14
    • 1970-01-01
    • 2020-05-02
    • 1970-01-01
    • 1970-01-01
    • 2011-05-04
    • 2018-02-09
    • 1970-01-01
    相关资源
    最近更新 更多