问题标签 [python-socketio]

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.

0 投票
1 回答
36 浏览

python-3.6 - 为什么我会看到 Python 套接字模块的 TypeError?

我正在学习 python,这些天我正在尝试使用套接字模块。下面是客户端逻辑。

在这里,我将用户的输入作为主机名。然而。上面的 porgram 无法将主机名转换为整数。我得到以下错误

我尝试使用一些python方法通过在用户输入上引入for循环来解决这个问题,如下所示

但现在我得到以下错误:

因此,基于错误我在“n”上使用了 str() 函数。但是当我这样做时,我得到以下错误:

我还在互联网上搜索了上述错误,但解决方案对我没有帮助。

请帮助我理解我的错误。

谢谢

0 投票
1 回答
310 浏览

python - Python socket.io 客户端在带有字典和列表消息的事件上失败

我已经安装了 python-socketio==4.3.1,并且可以正确连接到 socket.io 服务器。

每当我收到消息时,我都会收到异常。我将获得的数据将是连接事件的列表和消息事件的字典。

我能够使用节点客户端正确记录消息。有任何想法吗?

代码现在是这样的:

0 投票
1 回答
123 浏览

node.js - 如何使用 python-socketio 使用从 node.js 服务器发送到 python 脚本客户端的值?

我使用 node.js 服务器将数据发送到 python 客户端。Python 的控制台显示接收数据良好,但我在文档中找不到在 Python 客户端中使用它们的方法。

在 Python 的脚本控制台中:

我尝试了API 文档中的几个示例!

我无法在控制台中打印任何内容。以下代码有效:

没有错误信息。我希望首先使用打印功能打印接收数据,并将它们与 python 脚本中的其他功能一起使用。

任何技巧或想法?

0 投票
2 回答
6200 浏览

python - 如何在 python-socketio 上发送消息

API 文档 ( https://python-socketio.readthedocs.io/en/latest/intro.html ) 提供了服务器和客户端的示例。但是,如果您运行它们,您将不会开始发送消息。而且我不确定如何设置它。

如何设置消息传递,以便我可以通过该print功能输出他们的身体?

客户端.py

服务器.py

痕迹客户端.py

跟踪服务器.py

0 投票
1 回答
103 浏览

python-3.x - 如何在 socketio 方法中获取全局金字塔请求?

我想使用 python-socketio 并且我想从 socketio 方法查询我的数据库。我的数据库设置保存在金字塔请求中。但我不明白如何在没有 http-requests 的情况下获取这些设置。

我正在考虑使用' pyramid.threadlocal.get_current_request '但这个方法返回无。

我通过此代码将数据库设置添加到金字塔请求中。

__init__.py

session_maker

0 投票
1 回答
2184 浏览

python - python socketio通信与ssl相关问题

我正在使用 python socketio 进行通信,它适用于 http。升级它以使用 SSL 时出现问题。

我制作了自签名根证书 (CA),并颁发了 server.cert 和 server.key。我告诉计算机信任 CA。之后,我在 flask-socketio 服务器端添加了 server.cert 和 server.key。代码如下所示:

客户端连接的代码很简单:

我正在使用 python-socketio ( https://python-socketio.readthedocs.io/en/latest/client.html#disconnecting-from-the-server ) 作为客户端。

服务器启动后,网站运行良好,连接安全。命令行如下所示:

当 SocketIO 客户端尝试与服务器连接时,连接被拒绝,在服务器端,最终抛出如下错误:

我想我可能会错过一些东西。有任何想法吗?提前致谢!

0 投票
1 回答
594 浏览

python - python aiohttp socketio中是否可能存在竞争条件?

我正在处理类似于以下代码的代码。有时程序停止工作,或者我收到有关 socketio 会话访问的奇怪错误。慢慢地我觉得这可能是比赛条件。

它的更多伪代码。我想证明,我从多个协程访问全局共享状态和 socketio 会话。

0 投票
1 回答
1087 浏览

django - 服务器有时会意外关闭连接

项目背景:

  1. Django项目,我使用gunicorn运行项目,在项目中,我使用python socket io处理一些事件
  2. Postgresql,配置如下:

python socket io 将保留一个线程来处理一些事件。所以线程有自己的postgresql数据库连接。有时候,我发现它会抛出数据库连接问题,像这样,我不知道为什么数据库连接没有正常关闭

这是我在 PostgreSQL 日志文件中得到的:

关于这个问题的一些想法?我认为如果连接保持时间过长(> CONN_MAX_AGE),应该关闭conn并设置为None,但实际上连接不是null而是已经关闭

0 投票
0 回答
499 浏览

gevent - 具有空闲客户端的python socketio进程上的高cpu使用率

在使用 flask-socketio 进行一些测试时(在带有 gevent 的 uwsgi 上),我们注意到当添加更多客户端时,socketio 进程上的 cpu 使用率迅速达到 85%。奇怪的是,客户是在积极沟通还是只是在闲置等待,这似乎并不重要。

我使用 pyflame 来分析正在发生的事情,似乎超过 50% 的时间花在 server.py:_service_task 中,其中大部分在 sleep() 中,另一部分在 check_ping_timeout 中。我能够找到一些描述空闲等待循环的相同行为的 stackoverflow 帖子,但所描述的解决方案是引入 sleep(),_service_task 已经这样做了。

这发生在 ec2 t3.small 实例上的 150 个客户端上。奇怪的是,它不会发生在 50 个客户身上。(具有大约 300 个客户端的大型实例类型的类似行为)

这是正常的吗?我的主要问题是很难确定服务器是否过载。

0 投票
1 回答
4249 浏览

python - flask-socketio 服务器和 python-socketio 之间的安全通信

我正在使用 flask-socketio 和 python-socketio 开发一个项目。为了保证通信安全,系统需要升级 SSL。我正在使用 Mac 和 Python 3.7。

我使用 openssl ( ) 创建了一个证书rootCA.pem并将其添加到 Mac 的钥匙串中。之后,我发布server.cert了. 我使用flask-socketio构建了Web服务器,并添加了它。最后,该网站使用 ssl 运行良好。server.keyrootCA.pemserver.certserver.key

当我想保护flask-socketio服务器和python-socketio客户端之间的通信时,问题就发生了。当客户端尝试与服务器连接时,连接被拒绝并引发unknown ca error

我做了一些研究并意识到这个问题可能是由于 Python 3.7 使用了它自己的 OpenSSL 私有副本。因此,SocketIO 客户端无法验证我的自签名证书。这是来自 Python 3.7 安装的信息:

Python 3.7 的这个变体包括它自己的 OpenSSL 1.1.1 私有副本。不再使用已弃用的 Apple 提供的 OpenSSL 库。 这意味着由 Keychain Access 应用程序和安全命令行实用程序管理的系统和用户钥匙串中的信任证书不再被 Python ssl 模块用作默认值。 /Applications/Python 3.7 中包含一个示例命令脚本,用于安装来自第三方 certifi 包 ( https://pypi.org/project/certifi/ ) 的默认根证书的精选捆绑包。如果您选择使用 certifi,则应考虑订阅项目的电子邮件更新服务,以便在更新证书包时收到通知。

所以我去了文件夹/Applications/Python 3.7并执行了Install Certificates.command.

然而,这并不是问题的关键。因为 python certifi 是一个精心策划的 Root Certificates 集合。当然,它不包含我的自签名证书。所以,要解决这个问题,我需要让 Python 找到rootCA.pem.

在 python certifi 的文件夹中,有一个文件名为cacert.pem. 这包含根证书。所以我rootCA.pem在末尾添加了 的内容cacert.pem

之后,我在命令行中尝试了这段代码:

和输出:

我认为,在这种情况下,cacert.pem可以验证服务器的证书。我知道这不是一个优雅的解决方案。如果您有更好的方法让 python 找到我的自签名证书,请告诉我。

之后,我尝试使用 python-socketio 连接到 flask-socketio 服务器。这一次,我又犯了一个错误。在服务器端,日志信息为:

在客户端,错误是这样抛出的:

我不知道为什么会这样。flask-socketio 服务器和 python-socketio 客户端之间的通信在没有 SSL 的情况下运行良好。所以我认为代码可能没有什么问题,但我还是在这里给出代码。这是针对服务器的:

这是给客户的:

请帮忙!我知道我的问题很冗长。但我只想展示我试图解决问题的方式。如果有什么问题,请告诉我。谢谢!