问题标签 [asyncore]

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 回答
1527 浏览

python - Asyncore TCP 服务器,我不明白如何关闭客户端套接字的连接

我不明白客户端套接字的连接如何关闭。

如果我重写removeClient方法TCPServer

我有错误socket.error: [Errno 9] Bad file descriptor

PS对不起我的英语


UPD:肮脏的黑客

:) 这是工作!

0 投票
1 回答
788 浏览

python - asyncore server: Request resulting in "socket.error'>:[Errno 32] Broken pipe)"

I'm writing an asyncore server which fetches info from another module in same process and writes it back to client. The info basically is a dictionary where for each key we have a queue of messages. I'm required to dump the length of each queue. The code runs fine on a test machine but as soon as I install it on a production server I start getting following error message : "socket.error'>:[Errno 32] Broken pipe)".

This is the server:

and this is the client code:

Thanks in advance.

0 投票
1 回答
776 浏览

python - 如何在 Python 3 中将 asyncore 与多处理 IPC 模块一起使用?

我正在尝试利用multiprocessing模块的客户端/服务器架构来促进我的 Python 脚本之间的通信。我希望能够在主事件循环之外实现一个单独的连接侦听器,使用asyncore. 我怎样才能做到这一点?

虽然没有关于如何执行此操作的外部文档,但我尝试asyncore.dispatcher使用以下侦听器套接字构建一个基本的multiprocessing.Listener

虽然服务器确实循环,但它永远不会触发handle_accepted

0 投票
2 回答
803 浏览

python - 高效的python聊天服务器

我现在正在写一个单播聊天服务器模型,流程如下:

  • 发送者向聊天服务器发送消息,在消息中服务器还指定消息接收者ID
  • 聊天服务器将根据收件人 ID 将消息路由到正确的客户端

我使用 python 标准库 asyncore 实现了聊天服务器模型。我发现一旦客户端连接到服务器,CPU 就会上升(1% 对 24%)。我相信性能受到handle_write函数循环的限制。

是否有更好(例如更高效)的框架来完成我的聊天服务器要求?

提前致谢

0 投票
0 回答
66 浏览

networking - Python客户端连接到大量服务器

如何建立和维护到多个远程服务器的大量 TCP 连接?当我说大时,我认为 c10k 大。这将是一种大规模连接的 P2P 应用程序,它会积极寻找新的同行。

这将涉及使用单个传出 TCP 端口,有点像服务器,在单个端口中接收数据并同时或异步处理它,但不是在端口上侦听,而是 SYN 出多个远程服务器。为了实现这一点,我想使用 Linux/BSD 操作系统,最好使用异步 python 网络库。

我查看了asyncoretwisted的基本文档以及一些关于堆栈溢出的基本搜索,但我没有找到我需要的东西。

有人可以向我指出一个可能的解决方案,或者在东方一些不涉及在操作系统级别的东西中潜水(至少不深入)的文献。

谢谢你的帮助。

0 投票
1 回答
2097 浏览

python - Python - Asyncore(客户端)套接字 - 无法确定连接状态

出于某种原因,self.connected该类asyncore.dispatcher不认为我的套接字是在客户端连接的。服务器端将套接字视为已连接并将其视为已连接,但客户端不知道它是否已连接并且handle_connect不“proc”,因此我不能使用它的覆盖版本来检查套接字是否连接。

关于这段代码为什么它不起作用的任何想法:

0 投票
1 回答
400 浏览

python - 使用 asyncore 的异步 DNS 解析器

有没有办法使用 Python 和 asyncore 进行 DNS 解析?

我无法安装 adns,也不喜欢使用 gevent 库。

(对于 URL 下载 gevent 给我的性能比 syncore.loop 慢)

0 投票
1 回答
892 浏览

python - 扩展 asyncore.dispatcher 的 HTTP 类

是否有使用 asyncore.dispatcher 执行 HTTP 客户端的“标准”或众所周知的类?

我可以做一个,但我不想再次发明轮子:)

0 投票
1 回答
1288 浏览

python - Python 与 asynchat 聊天获取会话数据

我从这里有这段代码:

如果我使用 putty/telnet 或任何其他软件连接它,我将得到以下输出:

首先test是我发送的内容,其次>>>test是服务器广播回来的内容。

我怎样才能删除我发送的同一条消息的广播,所以我不会得到第二个>>>test?也许我可以注册会话 ID 或任何其他数据,当服务器广播消息时,我可以将数据发送到除先前记录的会话之外的所有会话?

或者也许我可以添加用户名并使用它来删除重复的消息?

我没有找到任何关于 asyncore 或 asychat 的教程或文档,因此我们将不胜感激。

0 投票
1 回答
135 浏览

python - 将方法调用重定向到带有文件描述符的东西 - asyncore

我们有一个基于 asyncore 的网络客户端,用户的网络连接体现在一个Dispatcher. 目标是让从交互式终端工作的用户能够输入网络请求命令,这些命令将发送到服务器并最终返回答案。客户端被编写为异步的,因此用户可以同时在不同的服务器上启动多个请求,并在结果可用时收集它们。

当我们在一个选择循环中进行时,我们如何允许用户输入命令?如果我们点击select()只注册为可读的调用,那么我们将坐在那里直到我们读取数据或超时。在此(可能很长)时间内,用户输入将被忽略。如果我们总是注册为可写的,我们会得到一个热循环。

一种不好的解决方案如下。我们在自己的线程中运行选择循环,并通过调用我们在 Dispatcher 上定义的方法让用户将输入注入到线程安全的写入队列中。就像是

然后,我们仅在队列不是 emtpy 时才注册为可写

然后,我们将指定一个超时,因为select()它在人类尺度上很短,但对计算机来说很长。这样,如果我们在select用户输入新数据时只注册用于读取的调用,循环最终将再次运行并发现有新数据要写入。这是一个糟糕的解决方案,因为我们可能也希望将此代码用于服务器的客户端连接,在这种情况下,我们不希望您等待的死区select()时间超时。再次,我意识到这是一个糟糕的解决方案。

似乎正确的解决方案是通过文件描述符引入用户输入,以便我们可以在select仅注册为可读的调用中检测新输入。有没有办法做到这一点?

注意:这是为了简化此处发布的问题