问题标签 [nameko]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python-3.7 - Nameko RPC 认证方案
我试图确定使用 RPC 调用时 Nameko 是否有任何身份验证模式。对于 HTTP,它们是 JWT 的一些有据可查的示例,但是对于 RPC,这是缺乏的。
我想要实现的是服务到服务的通信是安全的和经过身份验证的,并且如果服务处理消息,那么该消息也具有可以验证的标识符(例如用户对象)。
是否有任何“模式”,或者这是否需要我自己实现。
python - 使用 Nameko 的 Python 微服务
我正在尝试使用带有 Nameko示例的简单 Python 微服务。
我在 docker 中运行了 rabbitmq 和 rabbitmq 管理:
docker run -d --hostname my-rabbit --name some-rabbit rabbitmq:3
docker run -d --hostname my-rabbit --name mgmt-rabbit -p 15672:15672 rabbitmq:3-management
我可以浏览到 http://localhost:15672 并且它正在运行。
我已经使用以下方法安装了 nameko:
pip install nameko
创建了我的 virtualenv 并创建了 helloworld.py:
如果我运行以下任何命令:
nameko 运行 helloworld
nameko 运行 helloworld:GreetingService
nameko 运行 helloworld --broker amqp://guest:guest@localhost
我收到此错误:
错误:没有名为“helloworld”的模块
我究竟做错了什么?
python - 我无法启动我的第一个 python nameko 服务
我得到以下堆栈跟踪:
Traceback(最近一次调用最后一次):
文件“”,第 991 行,在 _find_and_load
文件“”中,第 975 行,在 _find_and_load_unlocked
文件中“”,第 671 行,在 _load_unlocked
文件中“”,第 783 行,在 exec_module
文件“”中,第 219 行,在 _call_with_frames_removed
文件中“c:\users\x\appdata\local\programs\python\python38\lib\site-packages\nameko\cli\run.py”,第 4 行,在
eventlet.monkey_patch() # noqa(其余导入之前的代码)
文件“c:\users\x\appdata\local\programs\python\python38\lib\site-packages\eventlet\patcher.py”,第 334 行,在猴子补丁fix_threading_active
()
文件“c:\users\x\appdata\local\programs\python\python38\lib\site-packages\eventlet\patcher.py”,第 331 行,在 fix_threading_active
_os.register_at_fork(
AttributeError: module 'os' has no attribute 'register_at_fork'
在处理上述异常的过程中,又出现了一个异常:
Traceback (most recent call last):
File "c:\users\x\appdata\local\programs\python\python38\lib\runpy.py", line 194, in _run_module_as_main return _run_code(code, main_globals, None,
File "c:\users\x\appdata\local\programs\python\python38\lib\runpy.py", line 87, in run_code
exec(code, run_globals)
File "C: \Users\x\AppData\Local\Programs\Python\Python38\Scripts\nameko.exe_main.py ”,第 7 行,在
文件“c:\users\x\appdata\local\programs\python\python38\lib\ site-packages\nameko\cli\main.py",第
112 行,在主要
args.main(args)中
文件“c:\users\x\appdata\local\programs\python\python38\lib\site-packages\nameko\cli\commands.py”,第
109 行,
从 .run 导入主
文件“”,第 991 行,在 _find_and_load
文件“”中,第 152 行,在退出
文件“”中,第 107 行,在释放
RuntimeError: cannot release un-acquired lock
这是我的点子冻结:
amqp==2.6.1
astroid==2.4.2
certifi==2020.6.20
chardet==3.0.4
colorama==0.4.3
dnspython==1.16.0
eventlet==0.27.0
greenlet= =0.4.16
idna==2.10
isort==5.5.2 kombu
==4.6.11
lazy-object-proxy==1.4.3
mccabe==0.6.1
mock==4.0.2
monotonic==1.5
nameko==2.12 .0
path==15.0.0
path.py==12.5.0
pylint==2.6.0
PyYAML==5.3.1
requests==2.24.0
六==1.15.0
toml==0.10.1
urllib3==1.25 .10
藤==1.3.0
virtualenv==20.0.31
Werkzeug==1.0.1 wrapt
==1.12.1
python - 无法在 Docker 容器中调用 nameko shell
我nameko shell
在示例服务的 docker 容器中调用,但收到此错误。我已经设置了两个容器。我的 rabbitmq 容器和我的服务容器。我正在nameko shell
从服务容器 bash 中调用。容器正确启动,服务容器连接成功。但我不能使用外壳。
错误
Dockerfile
配置文件
码头工人撰写文件
python - 具有任务管理队列的 Python 微服务
我正在尝试开发一个能够以并行且高效的方式管理任务队列的微服务系统,但我被卡住了。
我简要描述了系统应该如何运行。
该系统由n个微服务组成,每个微服务管理一个特定的任务。每个微服务都可以将任务列表传递给任何其他微服务。
为了允许单个微服务管理大量任务,我想创建一个主微服务,将要执行的任务作为输入(例如来自某种总线),并让它们由n°它的工人,将他们分成几部分。拆分是在不同大小的元素中执行的,例如。3名工人:第一个任务管理100个项目,第二个任务管理2个项目,第三个任务管理20个项目。当一个worker完成它的工作时,主微服务提供结果并将结果返回给请求的微服务(或总线),检查是否还有其他任务要执行,如果有,则传递它们给他解放自己的第一个工人。
我尝试了 Nameko 和 Celery,但我无法以满足这些需求的方式开发它,特别是对于由 worker 管理的工作的异步管理部分,它将结果返回给 master,从而立即将结果提供给总线(或给请求者)并传递给空闲工作人员另一个要执行的任务列表
docker - 尝试连接到另一个 docker 容器中的 rabbitmq 时出现“无法解析代理主机名”
我一直在寻找如何连接到运行 RabbitMQ 的外部 docker 容器的几个小时。
我正在尝试使用需要 RabbitMQ 的 Nameko 运行一些服务。我已经使用以下命令启动了我的 RabbitMQ 容器:
我创建了一个名为 config.yaml 的 yaml 配置文件,其中包含:
我启动我的 rabbit 容器和我的 Nameko 容器,并在 Nameko 容器的 CLI 中运行以下命令:
我收到以下错误:
Docker、RabbitMQ 和 Nameko 对我来说都是新技术,所以我不确定自己做错了什么。如果你看到任何突出的东西,请告诉我。
decorator - nameko rpc 调用的装饰器
所以我试图在使用nameko时通过RPC调用添加装饰器。
我的代码看起来像这样:
validate_sort_by
验证参数的给定值sort_by
是否是作为参数传递给装饰器的列表之一。下面是代码:
当我调用 rpc 时,就结果而言一切正常。但是我已经启用了 rpc 日志记录nameko-tracer
。该模块引发错误:
现在我确实浏览了库代码的确切文件行。这里的问题似乎是它正在获取错误的 args dict,这可能是包装函数的问题。我能做些什么来解决这个错误?
python - Nameko 和 ImportError
Nameko框架写的微服务启动时出现问题。通过命令启动微服务时
抛出以下异常:
我知道这与“sys.path”变量以及启动的来源有关。但是,我不明白如何使导入对整个项目以及其中的单独微服务都可行(是的,微服务被合并到一个存储库中,每个存储库都编写了自己的 docker-file)
如果您指定相对于微服务起点的绝对路径,一切正常。但是这并不适合整个项目,PyCharm 表示导入曲线,自动补全不起作用等等。
python - Nameko - 在 '__init__.py' 中找不到参考 'config'
我正在Nameko wity pyTest中设置集成测试。在我的conftest.py
我添加了以下夹具
但我得到了这个错误
PS:我已经Nameko 2.14.0
安装了
celery - Rpc 调用在 celery 任务中不起作用
我正在尝试在 celery 任务中调用带有 nameko 的 rpc 函数,当我执行此操作时,它没有延迟就可以工作,但是随着延迟我得到一个错误
[2021-11-02 15:03:15,440: ERROR/MainProcess] 任务 background_nameko.services.remote_task[4cd31b92-9140-4265-8e03-e9b9e57552cd] 引发意外:ConnectionRefusedError(111, 'ECONNREFUSED') Traceback(最近一次调用最后):文件“/python3.7/site-packages/amqp/transport.py”,第 138 行,在 _connect 主机、端口、系列、socket.SOCK_STREAM、SOL_TCP)文件“lib/python3.7/site-packages/eventlet /support/greendns.py",第 539 行,在 getaddrinfo socktype、proto、aiflags) 文件 "/usr/lib/python3.7/socket.py",第 752 行,在 getaddrinfo 中用于 _socket.getaddrinfo(host, port , family, type, proto, flags): socket.gaierror: [Errno -9] Address family for hostname not supported
在处理上述异常的过程中,又出现了一个异常:
回溯(最后一次调用):文件“lib/python3.7/site-packages/celery/app/trace.py”,第 412 行,在 trace_task R = retval = fun(*args, **kwargs) 文件“lib /python3.7/site-packages/celery/app/trace.py”,第 704 行,在protected_call中 return self.run(*args, **kwargs) 文件“/background_nameko/services.py”,第 36 行,在 remote_task “AMQP_URI”:'amqp://guest:guest@172.21.0.6:5672//'})作为 rpc_proxy:文件“lib/python3.7/site-packages/nameko/standalone/rpc.py”,第 252 行,在进入 返回 self.start() 文件“/lib/python3.7/site-packages/nameko/standalone/rpc.py”,第 258 行,在 start self.reply_listener.start() 文件“lib/python3.7/site- packages/nameko/standalone/rpc.py”,第 87 行,开始可能是_declare(self.queue, conn.channel()) 文件“lib/python3.7/site-packages/kombu/connection.py”,第 289 行,在通道 chan = self.transport.create_channel(self.connection) 文件“lib/python3.7/site-packages/kombu/connection.py”,第 867 行,连接 max_retries=1,reraise_as_library_errors=False 文件“lib/python3 .7/site-packages/kombu/connection.py”,第 445 行,在 _ensure_connection 回调中,timeout=timeout 文件“lib/python3.7/site-packages/kombu/utils/functional.py”,第 344 行,在 retry_over_time返回 fun(*args, **kwargs) 文件“lib/python3.7/site-packages/kombu/connection.py”,第 874 行,在 _connection_factory self._connection = self._establish_connection() 文件“lib/python3.7/site-packages/kombu/connection.py”中,第 809 行_establish_connection conn = self.transport.establish_connection() 文件“lib/python3.7/site-packages/kombu/transport/pyamqp.py”,第 130 行,在建立连接 conn.connect() 文件“lib/python3.7/site -packages/amqp/connection.py”,第 314 行,连接 self.transport.connect() 文件“lib/python3.7/site-packages/amqp/transport.py”,第 78 行,连接 self._connect( self.host、self.port、self.connect_timeout)文件“lib/python3.7/site-packages/amqp/transport.py”,第 149 行,_connect“无法解析代理主机名”))文件“lib/python3 .7/site-packages/amqp/transport.py",第 162 行,在 _connect self.sock.connect(sa) 文件“lib/python3.7/site-packages/eventlet/greenio/base.py”中,第 267 行,在连接 socket_checkerr(fd) 文件“lib/python3.7 /site-packages/eventlet/greenio/base.py",第 51 行,在 socket_checkerr 中引发 socket.error(err, errno.errorcode[err]) ConnectionRefusedError: [Errno 111] ECONNREFUSED