1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
from multiprocessing import Pool
from django.core.management import BaseCommand
from gm_types.gaia import USER_RIGHTS_LEVEL
from utils.rpc import get_rpc_invoker
from user_hierarchy.models import UserGrowthValue
from utils.rpc import logging_exception
STEP = 100
def chunk(arr, step):
return [arr[i: i+step] for i in range(0, len(arr), step)]
def update_user_level_list(users_list):
try:
r = get_rpc_invoker()
r['api/user/update_level_list'](users_list=users_list).unwrap()
except Exception as e:
logging_exception()
return
class Command(BaseCommand):
def handle(self, *args, **options):
users = UserGrowthValue.objects.exclude(level=USER_RIGHTS_LEVEL.V1).values('user_id', 'level')
users_list = chunk(list(users), STEP)
pool = Pool(processes=4)
pool.map(update_user_level_list, users_list)
pool.close()
pool.join()