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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# -*- coding: utf-8 -*-
from django.conf import settings
from django.core.management import BaseCommand
from multiprocessing import Process
from talos.models.diary import Diary
from talos.models.topic import Problem
from talos.logger import info_logger
user_ids = [33689650]
BATCH_SIZE = 500
def offline_topic():
topic_ids = list(Problem.objects.using(settings.SLAVE_DB_NAME).filter(
user_id__in=user_ids
).values_list('id', flat=True))
while topic_ids:
Problem.objects.filter(id__in=topic_ids[: BATCH_SIZE]).update(is_online=False)
info_logger.info('offline topic ids {}'.format(topic_ids[: BATCH_SIZE]))
print('offline topic ids: ', topic_ids[: BATCH_SIZE])
topic_ids = topic_ids[500:]
def offline_diary():
diary_ids = list(Diary.objects.using(settings.SLAVE_DB_NAME).filter(
user_id__in=user_ids
).values_list('id', flat=True))
while diary_ids:
Diary.objects.filter(id__in=diary_ids[: BATCH_SIZE]).update(is_online=False)
info_logger.info('offline diary ids {}'.format(diary_ids[: BATCH_SIZE]))
print('offline diary ids: ', diary_ids[: BATCH_SIZE])
diary_ids = diary_ids[500:]
class Command(BaseCommand):
"""
python django_manage.py diary_topic_offline
"""
def handle(self, *args, **kwargs):
print('start')
p_list = []
d = Process(target=offline_diary, args=())
t = Process(target=offline_topic, args=())
p_list.extend([d, t])
for i in p_list:
i.start()
for j in p_list:
j.join()
print('end')