我的同事写了这个
class Worker(object):
WORKER_LIMIT = 2
queue = Queue()
@classmethod
def enqueue(cls, _type, args):
cls.queue.put((_type, args))
@classmethod
def handle_event(cls, event):
pass
@classmethod
def worker(cls):
while True:
event = cls.queue.get(True)
cls.handle_event(event)
cls.queue.task_done()
@classmethod
def start(cls):
for i in range(cls.WORKER_LIMIT):
w = Thread(target=cls.worker)
w.daemon = True
w.start()
worker = Worker()
worker.start()
他用它来产生后台进程来运行繁重的任务(这很棒)。但我对此感到非常不满。这会让很多僵尸?我们的应用服务器使用nginx和gunicorn运行。
我自己会使用一些redis任务队列将工作发送到外面的工作人员。我不喜欢直接来自网络应用程序的spawn线程的想法。你们有什么想法吗?