python - 客户端在不阻止客户端/服务器通信的情况下启动单独进程的最佳方式

标签 python twisted

我试图实现的最终结果是允许服务器在建立连接时向客户端分配特定任务。简化版本是这样的

  1. 客户端连接到服务器
  2. 服务器告诉客户端运行一些网络任务
  3. 客户端接收任务并启动另一个进程来完成任务
  4. 客户端告诉服务器它已经启动
  5. 服务器告诉客户端它还有另一项任务要做(等等......)

一些注释

  • 客户可以执行的任务数量会有上限
  • 客户端需要能够监控任务/进程(正在运行?已死亡?)
  • 如果客户端能够从进程接收数据并在需要时发送到服务器,那就太好了

起初,我打算尝试线程,但我听说 python 不能正确执行线程(这是对还是错?)

然后有人认为从 python 中触发系统调用并记录 PID。然后向其发送某些信号以获取状态、停止(SIGUSR1、SIGUSR2、SIGINT)。但不确定这是否有效,因为我不知道是否可以从另一个进程捕获数据。如果可以的话,我不知道如何实现。 (标准输出或套接字文件?)

对于处理这个问题的最佳方法,你们有什么建议?

最佳答案

使用spawnProcess产生一个子进程。如果您已经在使用 Twisted,那么这应该可以非常无缝地集成到您现有的协议(protocol)逻辑中。

关于python - 客户端在不阻止客户端/服务器通信的情况下启动单独进程的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11142395/

相关文章:

python - 扭曲的 self.transport.write() - Python - 附加输出

python - 使用 cv2 在 python 中创建多 channel 零垫

python - 根据条件合并数组

python - Pandas:当索引为年月且列为日时,将 DataFrame 转换为系列

python - 停止扭曲时,工厂会等待 sql 执行完成吗?

python - 将来自 Twisted `enterprise.adbapi` 的查询添加到由 `twistd` 守护程序创建的 react 器循环

python - 如何使代理对象表现得像它包装的整数?

python - 使用不同的 botocore 安装 Boto3

twisted - 使用 deferred 进行无限调用循环

python - Twisted:减慢数据接收速度