저는 장고에서 스레드를 사용하여 "작업 관리자"와 같은 것을 만들려고합니다. 어떤 작업을 기다리고있을 것입니다.장고 다중 처리 및 빈 큐 넣기
import multiprocessing
from Queue import Queue
def task_maker(queue_obj):
while True:
try:
print queue_obj.qsize() # << always print 0
_data = queue_obj.get(timeout=10)
if _data:
_data['function'](*_data['args'], **_data['kwargs'])
except Empty:
pass
except Exception as e:
print e
tasks = Queue()
stream = multiprocessing.Process(target=task_maker, args=(tasks,))
stream.start()
def add_task(func=lambda: None, args=(), kwargs={}):
try:
tasks.put({
'function': func,
'args': args,
'kwargs': kwargs
})
print tasks.qsize() # print a normal size 1,2,3,4...
except Exception as e:
print e
사용자가 요청할 때 views.py 파일에서 "add_task"를 사용하고 있습니다. "스트림"의 대기열이 항상 비어있는 이유는 무엇입니까? 내가 뭘 잘못하고있어?
['celery'] (http://docs.celeryproject.org/ko/latest/index.html)를 사용해 본 적이 있습니까? 사용하기 쉽고, 성숙하며, 장고와 잘 어울립니다. 휠을 재발견해야하는 압도적 인 이유가 없다면 정말이 도구가 가장 좋습니다. – dgel