GAE 백그라운드 스레드에 문제가 있음을 알 수 있도록 도움이 필요합니다. 내가 뭘 하려는지 GAE 백그라운드 스레드와 대기열을 사용하여 여러 스레드에서 작업을 실행합니다. 이 코드는 Backend 인스턴스에서 실행되며 TaskQueue에 의해 시작됩니다. 내가 얻는 것은 스레드의 작업이 병렬이 아닌 연속적으로 실행된다는 것입니다. 어떤 종류의 목적은 패배합니다.GAE 배경 스레드가 병렬로 실행되지 않음
from Queue import Queue
from google.appengine.api import background_thread
from google.appengine.api import taskqueue
q = Queue()
class Util():
def work_in_background_thread(self):
for p in portions:
q.put(p)
def _worker(index):
portion = q.get()
do_work(portion)
q.task_done()
def do_work(snp_list):
for snp in snp_list:
self.find_snp_data(snp)
for i in range(len(portions)):
try:
t = background_thread.BackgroundThread(target=_worker, args=[i])
t.setDaemon(True)
t.start()
except:
continue
q.join()
작업이 완료되었지만 스레드가 차례로 실행되므로이 작업을 실행하는 데 몇 시간이 걸릴 수 있습니다!
궁금한 점이 있지만 모듈의 최상위 레벨에서 기능을 정의 해 보았습니까? 어쩌면 클래스 아래에 중첩 된 함수 아래에 중첩 시키면 던질 수 있습니다. 그렇게 논리적으로 생각하지는 않겠지 만, BackgroundThread가 어떻게 그것을 처리할지 모르겠습니다. – Dave