【问题标题】:Python Server, Job Queue, Launch Multiprocessing JobPython 服务器、作业队列、启动多处理作业
【发布时间】:2023-10-06 10:49:01
【问题描述】:

我需要创建一个可以接受多个作业请求的 python 服务器。然后从它请求的那些中,它一次处理每个作业,但服务器在处理任务时仍然可以接受新作业。

有人对如何做到这一点有建议吗?

谢谢

【问题讨论】:

  • 你的意思是多线程吗?
  • 不,我不想使用多线程。

标签: python queue


【解决方案1】:

当然。创建一个multiprocessing.Pool,默认情况下每个核心生成一个进程。然后使用原始进程运行 HTTP 服务或通过某种协议接受作业的其他东西。然后主进程监听新请求并将它们提交到池中进行异步处理。

【讨论】:

  • 你能举个例子吗?
  • 我可以,但 * 的重点主要在于提问者会尝试编写代码,其他人会在出现问题时提供帮助。因此,如果您同意我的方法,我建议您试一试——第一步是确定提交作业的协议。不要指望这是一个五行代码的程序——一个体面的实现将是相当多的代码,但如果你坚持不懈的话,这是可行的。
  • 那你能再给点提示吗?
  • 我知道您希望我/我们为您编写代码,但它没有发生,所以我建议您试一试,如果您有更具体的问题,请再回来。
  • 嗨,约翰,你能在下面看到我的代码并给我一些建议吗?
【解决方案2】:

使用twisted。 Twisted 是一个事件驱动的网络引擎。 Twisted 还支持许多常见的网络协议,包括 SMTP、POP3、IMAP、SSHv2 和 DNS。

【讨论】:

  • 客户端是否需要安装 twisted 才能访问此服务器?
  • @josh1234:不,Twisted 可以在服务器端或客户端使用,但它使用标准协议,因此与数百个甚至数千个其他系统兼容。
最近更新 更多