标签: nameko

我如何结合烧瓶和nameko?

我如何结合Flask Web应用程序和Nameko微服务?

让我给你一些背景信息.我有基于烧瓶(http://flask.pocoo.org)的Web应用程序.此应用程序可以执行很长(5-10分钟)的任务.我希望能够在此应用程序仍在运行时编写并附加其他模块.如果我在开发过程中停止应用程序是可以的,但我无法在生产中停止它.

我对Nameko(https://nameko.readthedocs.org)没有任何经验,它是解决我问题的最佳方案吗?如果是这样 - 我可以混合使用Flask app和Nameko微服务吗?

python flask nameko

14
推荐指数
1
解决办法
4260
查看次数

wrap_socket() 得到了一个意外的关键字参数 '_context' 和 deserialize(error)

我尝试使用请求来获取文件的 url。它在本地运行良好,但不适用于 nameko。

我尝试了 3 个 python3.7 的库。但都有同样的错误。导入 urllib.request,urllib3,requests

它在本地运行良好,如下所示:

import requests
url = "https://www.python.org/static/img/python-logo.png"
r = requests.get(url)
print(r.content)
Run Code Online (Sandbox Code Playgroud)

但它不能与 nameko 一起使用:

import requests
from nameko.web.handlers import http

@http("POST", "/import")
def testurl(self,request):
    url = "https://www.python.org/static/img/python-logo.png"
    r = requests.get(url)
    print(r.content)
Run Code Online (Sandbox Code Playgroud)
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/usr/local/lib/python3.7/site-packages/nameko/rpc.py", line 373, in __call__
    return reply.result()
  File "/usr/local/lib/python3.7/site-packages/nameko/rpc.py", line 331, in result
    raise deserialize(error)
nameko.exceptions.RemoteError: Exception Error on testurl: Cause : wrap_socket() got an unexpected keyword argument '_context'
Run Code Online (Sandbox Code Playgroud)

python-requests nameko python-3.7

8
推荐指数
1
解决办法
2002
查看次数

从另一个容器中的服务连接到Rabbitmq Docker容器

我已经做了很多搜索,但是无法解决此问题。

我有一个基本的Rabbitmq容器通过此命令运行:

docker run -d --hostname rabbitmqhost --name rabbitmq -p 15672:15672 -p 5672:5672 rabbitmq:3-management

nameko用来创建连接到此容器的微服务。这是一个基本的微服务模块main.py

from nameko.rpc import rpc
class Service_Name(object):
    name = "service_name"

    @rpc
    def service_endpoint(self, arg=None):
        logging.info('service_one endpoint, arg = %s', arg)
Run Code Online (Sandbox Code Playgroud)

该服务运行并使用以下命令从我的主机连接到Rabbitmq:

nameko run main --broker amqp://guest:guest@localhost

我想将服务放入一个Docker容器(称为service_one),但是当我运行该命令并运行前面的nameko命令时,socket.error: [Errno 111] ECONNREFUSED无论如何尝试将两个容器链接起来,我都会得到。

正确的方法是什么?目的是将每个服务都放在一个容器中,所有服务都通过兔子相互通信。谢谢。

python rabbitmq docker nameko

4
推荐指数
1
解决办法
7769
查看次数

标签 统计

nameko ×3

python ×2

docker ×1

flask ×1

python-3.7 ×1

python-requests ×1

rabbitmq ×1