客户端启动独立进程而不阻塞客户端/服务器通信的最佳方式

2024-06-25 23:28:42 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

几张纸条

  • 一个客户可以完成多少任务是有上限的
  • 客户机需要能够监视任务/进程(正在运行?死了吗?)你知道吗
  • 如果客户机能够从进程接收数据并在需要时发送到服务器,那就更好了

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

然后从python触发一个系统调用并记录PID。然后向其发送特定的状态、停止信号(SIGUSR1、SIGUSR2、SIGINT)。但不确定这是否有效,因为我不知道是否可以从另一个进程捕获数据。如果可以的话,我不知道该怎么做。(标准输出还是套接字文件?)你知道吗

你们有什么好的建议吗?你知道吗


Tags: 网络服务器客户端客户机客户进程状态系统
2条回答

使用Celery,一个Python分布式任务队列。它可能做你想做的一切,或者可以让它做你想做的一切,它还将处理大量你可能还没有考虑过的边缘情况(如果服务器崩溃,现有作业会发生什么情况,等等)

您可以使用RabbitMQ之类的消息传递队列从其他软件与芹菜通信;有关详细信息,请参阅芹菜教程。你知道吗

使用诸如MySQL或PostgreSQL之类的数据库来存储有关任务及其结果的信息可能是最方便的,但是如果您愿意,您可以设计一个不使用数据库的解决方案。你知道吗

使用spawnProcess生成子进程。如果您已经在使用Twisted,那么它应该可以无缝地集成到您现有的协议逻辑中。你知道吗

相关问题 更多 >