GAEバックグラウンドスレッドの問題を理解するのに助けが必要です。私がやろうとしているのは、GAEバックグラウンドスレッドとキューを使用して、いくつかのスレッドでジョブを実行することです。コードはバックエンドインスタンスで実行され、TaskQueueによってキックされます。私が得ているのは、スレッド内のジョブが並列ではなく直列で実行されているということです。これは、目的を損なうものです。
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()
作業は完了していますが、スレッドが次々に実行されるため、このジョブの実行には数時間かかります。