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

标签 python rabbitmq rpc nameko

我正在使用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 作为队列服务。

最佳答案

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

Documentation
GitHub issue

关于python - 如何在nameko中使RPC调用异步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59529038/

相关文章:

python - 有没有一种方法可以在 python 中连接两个对象,使得其中一个对象中的所有值都为另一个对象中的每个值重复

kubernetes - 使rabbitmq集群可公开访问

java - 根据 en 值在 Spring Boot 中加载 Rabbit 或 IBM mq 配置

linux-kernel - 查看网络文件系统中RPC RMI相关代码

json - 如何在客户端-服务器 PlayN 游戏中处理 RPC?

C:编写 RPC 低级应用程序:从客户端获取 IP 地址

python - 避免在 Django ORM 中多次引用同一个对象

python - 仅当文件不同时如何 shutil.copyfile?

python - 如何使用 Selenium 和 Python 查找 div 元素

rabbitmq - MassTransit Saga - 错误和不一致