[英]How to stop django management command after a time period using multiprocessing?
[英]How to do multiprocessing with a Django management command?
我有一個 Django 管理命令,我可以這樣運行:“python manage.py updateprices”並執行以下查詢:
activos = SearchTag.objects.filter(is_active=True)
我想同時將這樣的命令拆分到我的數據庫的較小塊上, eg activos[0:2000]
,所以我加快了進程
我怎樣才能做到這一點?
如果我理解正確,我認為您正在談論按組進行數據庫查詢。
所以首先,你應該創建一個列表(可迭代)
q_list = []
active_q = SearchTag.objects.filter(is_active=True)
# start from 0 and make jumps of 2,000. so if you have 20,000 rows you would have a list containing 10 querysets of 2000 rows each
for i in range(0, active_q.count(), 2000):
q_list.append(active_q[i:i+2000])
現在您有了要對其進行操作的項目列表,您可以輕松地將其傳遞給池
from multiprocessing import cpu_count, Pool
pool = Pool(processes=cpu_count())
pool.map(function_on_each_q, q_list)
顯然你需要創建 function 來做你想做的任何事情:
def function_on_each_q(q_list):
# DO WHATEVER WITH q_list
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.