mirror of
https://github.com/clearlinux/uwsgi.git
synced 2026-04-28 19:03:37 +00:00
38 lines
752 B
Python
38 lines
752 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"
|