結果がデータベースに返されるということですか、それとも独立して実行しているコードから直接 django-views を作成したいですか?
大量のデータがある場合は、 Pythons を使用するのが好きmultiprocessing
です。JoinableQueue
実行するさまざまなタスクと、さまざまなタスクを消費するワーカーのプールで満たすジェネレーターを作成できます。このようにして、システムのリソース使用率を最大化できるはずです。
マルチプロセッシング モジュールを使用すると、ネットワーク経由でいくつかのタスクを実行することもできます (例: multiprocessing.Manager()
)。これを念頭に置いておけば、データを時間内に処理するために 2 台目のマシンが必要な場合でも、簡単にスケールアップできるはずです。
例:
この例は、複数のプロセスを生成する方法を示しています。ジェネレーター関数は、重い作業が必要なすべての新しいエントリについてデータベースにクエリを実行する必要があります。コンシューマはキューから個々のアイテムを取得し、実際の計算を行います。
import time
from multiprocessing.queues import JoinableQueue
from multiprocessing import Process
QUEUE = JoinableQueue(-1)
def generator():
""" Puts items in the queue. For example query database for all new,
unprocessed entries that need some serious math done.."""
while True:
QUEUE.put("Item")
time.sleep(0.1)
def consumer(consumer_id):
""" Consumes items from the queue... Do your calculations here... """
while True:
item = QUEUE.get()
print "Process %s has done: %s" % (consumer_id, item)
QUEUE.task_done()
p = Process(target=generator)
p.start()
for x in range(0, 2):
w = Process(target=consumer, args=(x,))
w.start()
p.join()
w.join()