我正在开发一个服务器(守护进程)。实现单线程服务器/守护进程(Python)
服务器有一个“工作者线程”。工作线程运行一系列命令。当队列为空时,工作线程暂停(但不会退出,因为它应该保留内存中的某个状态)。要在内存中拥有完全一个状态的副本,我需要全部运行一个(不是几个而不是零)工作线程。
当客户端连接到Unix套接字并发送命令时,将请求添加到此队列的末尾。
命令发出后,它被添加到工作线程的命令队列中。将它添加到队列后,服务器回复“OK”之类的内容。服务器接收命令和“确定”回复之间应该没有很长的停顿时间。但是,在队列中运行命令可能需要一些时间。
工作者线程的主要“工作”被拆分成小块(占用相对较少的时间)块。在块之间,工作线程检查(“吃”和清空)队列,并根据从队列中提取的数据继续工作。
如何在Python中实现这个服务器/守护进程?
请问为什么它需要成为单线程? 如果您有一个线程可以侦听来自套接字的消息并立即向客户端回复“ok”,那么会发生什么情况?然后您将在侦听器和worker之间有一个队列,并且侦听器只会将消息发送到该队列。它们将按照到达顺序进行处理,并且工作线程应该保留其“内存中的状态”并且不会被任何其他线程或进程混淆。 – Hannu
@Hannu我坚持我需要单**工**线程。为了让套接字侦听有另一个线程是可以的。 – porton
套接字侦听器线程和队列不应该解决您的问题吗? 你的套接字总是会接受新的消息,他们会立即作出回应,工作人员会保存它的状态,并按照他们到达的顺序处理请求?您的工作人员可以根据需要从队列中“吃”任务。 – Hannu