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

问题描述 投票:0回答:1

[我正在使用nameko构建具有微服务体系结构的ETL管道,并且我不想在发出RPC请求后等待答复。

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)

此代码引发错误:

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作为排队服务。

python rabbitmq rpc nameko
1个回答
0
投票

具有相同的问题,您需要将async替换为call_async方法,并使用result()进行检索参考https://nameko.readthedocs.io/en/stable/built_in_extensions.htmlhttps://github.com/nameko/nameko/pull/318

© www.soinside.com 2019 - 2024. All rights reserved.