小编dan*_*elo的帖子

Python 如何通过 Gunicorn 和 Kubernetes 进行扩展?

我将使用 Gunicorn 和 Gevent/Eventlet 作为异步工作线程,在 Kubernetes 上部署一个带有 Docker 的 Python Flask 服务器。该应用程序将:

  1. 订阅 Apache Kafka 上的大约 20 个不同主题。
  2. 使用该数据对一些机器学习模型进行评分。
  3. 将结果上传到关系数据库。

Kafka 中的每个主题每分钟将收到 1 条消息,因此应用程序每分钟需要从 Kafka 消费大约 20 条消息。对于每条消息,处理和执行大约需要 45 秒。问题是我如何才能以良好的方式扩展它?我知道我可以在 Gunicorn 中添加多个工作线程,并在部署到 Kubernetes 时使用 pod 的多个副本。但这就足够了吗?不同 Pod 中的可用工作人员之间的工作负载是否会自动平衡?或者我可以做些什么来确保可扩展性?

python flask gunicorn docker kubernetes

6
推荐指数
1
解决办法
2749
查看次数

在Kubernetes的工作节点之间共享存储/卷?

是否有可能在Kubernetes的不同工作程序节点中存在的应用程序的两个Pod /实例之间共享一个集中式存储/卷?

所以解释一下我的情况:

  • 我有一个带有2个工作节点的Kubernetes集群。在每一个中,我都有1个正在运行的App X实例。这意味着我有两个App X实例完全同时运行。

  • 这两个实例都订阅了具有两个分区的topicX主题,它们是Apache Kafka中名为groupX的使用者组的一部分。

据我了解,消息负载将在分区之间分配,但在消费者组中的消费者之间也会分配。到目前为止一切顺利,对吗?

所以对我的问题:

  • 在我的整个解决方案中,我有一个按国家和ID唯一约束的层次结构划分。国家和ID的每种组合都有一个pickle模型(python机器学习模型),该模型存储在应用程序访问的目录中。对于一个国家/地区和ID的每种组合,我每分钟都会收到一条消息。

  • 目前,我有2个国家/地区,因此,为了能够进行适当的扩展,我想在两个应用X实例之间分配负载,每个实例处理自己的国家/地区。

  • 问题在于,使用Kafka可以在不同实例之间平衡消息,并且在不知道消息属于哪个国家的情况下访问每个实例中的pickle文件时,我必须在两个实例中存储pickle文件。

有办法解决吗?我宁愿使设置尽可能简单,以便于扩展和稍后添加第三,第四和第五个国家。

请记住,这是解释问题的过于简化的方法。实际上,实例数要多得多。

apache-kafka docker kubernetes kubernetes-pod

5
推荐指数
1
解决办法
499
查看次数

Python Pandas Fillna Median无法正常工作

我正在尝试在包含多列和几行的数据框中填充所有nan。我正在使用它来训练多元ML模型,因此我想用中位数填充每一列的nans。只是为了测试中位数函数,我这样做:

training_df.loc[[0]] = np.nan # Sets first row to nan
print(training_df.isnull().values.any()) # Prints true because we just inserted nans
test = training_df.fillna(training_df.median()) # Fillna with median
print(test.isnull().values.any()) # Check afterwards
Run Code Online (Sandbox Code Playgroud)

但是,当我这样做时,什么也没发生,最后一行的打印仍然返回True。如果我尝试更改为使用像这样的中位数函数:

training_df.fillna(training_df.median(), inplace=True)
Run Code Online (Sandbox Code Playgroud)

什么也没有发生。如果我这样做:

training_df = training_df.fillna(training_df.median(), inplace=True)
Run Code Online (Sandbox Code Playgroud)

Training_df变为无。我该如何解决?

python dataframe python-2.7 python-3.x pandas

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

前端监听器监听后端监听器

我一直在寻找有关此问题的答案,但找不到任何好的答案。我在 NodeJS 中构建了一个关于 cloudant 的监听器。因此,当 cloudant 更新时,我的代码中的一个函数会被调用。我的问题是这些数据应该作为前端应用程序中的实时数据提供。如果我将侦听器放在 API 端点/中间件中,它不会被调用,除非它收到来自前端的请求,我猜?

所以我的问题是:如何在后端创建一个侦听器,它可以在 Cloudant 发生变化时将数据发送到前端?基本上我想要一个前端的监听器来监听后端的一个监听器。

javascript listener node.js dom-events

2
推荐指数
1
解决办法
3628
查看次数

处理并发请求或使用eventlet线程化Flask SocketIO

我已经开始使用带有Eventlet的Python中的Flask SocketIO进行大量工作,并且正在寻找一种处理并发请求/线程的解决方案.我已经看到gevent可以实现,但是如果我使用eventlet怎么办呢?

python webserver eventlet socket.io flask-socketio

2
推荐指数
1
解决办法
928
查看次数

按键数组过滤 javascript 地图对象

我有一系列键:

var arr = ['var1', 'var2', 'var3']
Run Code Online (Sandbox Code Playgroud)

我还有一个 Javascript 映射对象,其中包含四个键(var1、var2、var3、var4)和值(1、2、3、4),我想通过 arr 数组进行过滤,因此我得到一个仅包含键(var1、var2、var3)和值(1、2、3)。有谁知道我该怎么做?

javascript arrays dictionary filter

0
推荐指数
1
解决办法
1万
查看次数