mirror of
https://github.com/clearlinux/uwsgi.git
synced 2026-05-14 10:43:51 +00:00
37 lines
757 B
Python
37 lines
757 B
Python
import Queue
|
|
from threading import Thread
|
|
import uwsgi
|
|
|
|
CONSUMERS = 4
|
|
|
|
def consumer(q):
|
|
while True:
|
|
item = q.get()
|
|
print(item)
|
|
#... DO A HEAVY TASK HERE ...
|
|
q.task_done()
|
|
|
|
def spawn_consumers():
|
|
global q
|
|
q = Queue.Queue()
|
|
for i in range(CONSUMERS):
|
|
t = Thread(target=consumer,args=(q,))
|
|
t.daemon = True
|
|
t.start()
|
|
print("consumer %d on worker %d started" % (i, uwsgi.worker_id()))
|
|
|
|
|
|
uwsgi.post_fork_hook = spawn_consumers
|
|
|
|
|
|
def application(env, start_response):
|
|
global q
|
|
|
|
# we pass a copy of the env dictionary as it gets cleared after yield/return
|
|
q.put(env.copy())
|
|
|
|
start_response('200 OK', [('Content-Type', 'text/html')])
|
|
|
|
yield "Task enqueued"
|
|
|