首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使RPC调用在nameko中异步?

如何使RPC调用在nameko中异步?
EN

Stack Overflow用户
提问于 2019-12-30 10:07:53
回答 2查看 1.4K关注 0票数 2

我正在使用内美子构建一个具有微服务体系结构的ETL管道,并且我不想在发出RPC请求后等待回复。

代码语言:javascript
复制
from nameko.rpc import rpc, RpcProxy

class Scheduler(object):
  name = "scheduler"

  task_runner = RpcProxy('task_runner')

  @rpc
  def schedule(self, task_type, group_id, time):
     return self.task_runner.start.async(task_type, group_id)

此代码引发一个错误:

代码语言:javascript
复制
Traceback (most recent call last):
  File "/home/satnam-sandhu/.anaconda3/envs/etl/bin/nameko", line 8, in <module>
    sys.exit(main())
  File "/home/satnam-sandhu/.anaconda3/envs/etl/lib/python3.8/site-packages/nameko/cli/main.py", line 112, in main
    args.main(args)
  File "/home/satnam-sandhu/.anaconda3/envs/etl/lib/python3.8/site-packages/nameko/cli/commands.py", line 110, in main
    main(args)
  File "/home/satnam-sandhu/.anaconda3/envs/etl/lib/python3.8/site-packages/nameko/cli/run.py", line 181, in main
    import_service(path)
  File "/home/satnam-sandhu/.anaconda3/envs/etl/lib/python3.8/site-packages/nameko/cli/run.py", line 46, in import_service
    __import__(module_name)
  File "./scheduler/service.py", line 15
    return self.task_runner.start.async(task_type, group_id)
                                  ^
SyntaxError: invalid syntax

我是微服务和Nameko的新手,我也使用RabbitMQ作为排队服务。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-12-30 14:03:09

我也遇到了同样的问题;您需要用async方法替换call_async方法,并使用result()检索数据。

文档

GitHub问题

票数 2
EN

Stack Overflow用户

发布于 2020-02-28 17:04:00

使用call_async代替异步或为更好的结果使用事件

从nameko.events import EventDispatcher,event_handler

代码语言:javascript
复制
@event_handler("service_a", "event_emit_name")
    def get_result(self, payload):
      #do_something...

以及在其他服务中

代码语言:javascript
复制
from nameko.events import EventDispatcher, event_handler
@event_handler("service_a", "event_emit_name")
    def return_result(self, payload):
       #get payload and work over there
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59529038

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档