Skip to content

Commit 55d0a3f

Browse files
authored
Merge pull request #1062 from readthedocs/davidfischer/optimize-migration
Commit the optimized migration
2 parents 42158c4 + d3bfd56 commit 55d0a3f

File tree

1 file changed

+22
-5
lines changed

1 file changed

+22
-5
lines changed

adserver/analyzer/migrations/0010_data_analyzed_url_domain.py

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,32 @@ def forwards(apps, schema_editor):
2121
AnalyzedUrl = apps.get_model("adserver_analyzer", "AnalyzedUrl")
2222
AnalyzedAdvertiserUrl = apps.get_model("adserver_analyzer", "AnalyzedAdvertiserUrl")
2323

24-
for analyzed_url in AnalyzedUrl.objects.all():
24+
# Update AnalyzedUrls domain field
25+
urls = []
26+
batch_size = 1000
27+
for analyzed_url in AnalyzedUrl.objects.all().order_by("pk").iterator():
2528
if not analyzed_url.domain:
2629
analyzed_url.domain = get_domain_from_url(analyzed_url.url)
27-
analyzed_url.save(update_fields=["domain"])
28-
29-
for analyzed_advertiser_url in AnalyzedAdvertiserUrl.objects.all():
30+
urls.append(analyzed_url)
31+
if len(urls) >= batch_size:
32+
AnalyzedUrl.objects.bulk_update(urls, ["domain"])
33+
urls = []
34+
if len(urls) >= 0:
35+
AnalyzedUrl.objects.bulk_update(urls, ["domain"])
36+
urls = []
37+
38+
# Do the same for AnalyzedAdvertiserUrls
39+
urls = []
40+
for analyzed_advertiser_url in AnalyzedAdvertiserUrl.objects.all().order_by("pk").iterator():
3041
if not analyzed_advertiser_url.domain:
3142
analyzed_advertiser_url.domain = get_domain_from_url(analyzed_advertiser_url.url)
32-
analyzed_advertiser_url.save(update_fields=["domain"])
43+
urls.append(analyzed_advertiser_url)
44+
if len(urls) >= batch_size:
45+
AnalyzedAdvertiserUrl.objects.bulk_update(urls, ["domain"])
46+
urls = []
47+
if len(urls) >= 0:
48+
AnalyzedAdvertiserUrl.objects.bulk_update(urls, ["domain"])
49+
urls = []
3350

3451

3552
class Migration(migrations.Migration):

0 commit comments

Comments
 (0)