Skip to content

Commit b7286ac

Browse files
committed
chore(csv_export): add time loggers
1 parent 690725a commit b7286ac

File tree

1 file changed

+15
-0
lines changed
  • django_forest/resources/associations/views

1 file changed

+15
-0
lines changed

django_forest/resources/associations/views/csv.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import logging
22
import csv
3+
import time
34

45
from django_forest.resources.associations.utils import AssociationView
56
from django_forest.resources.utils.csv import CsvMixin
@@ -13,6 +14,7 @@
1314

1415
class CsvView(SmartFieldMixin, JsonApiSerializerMixin, CsvMixin, AssociationView):
1516
def get(self, request, pk, association_resource):
17+
t0 = time.time()
1618
try:
1719
association_field = get_association_field(self.Model, association_resource)
1820
except Exception as e:
@@ -25,15 +27,25 @@ def get(self, request, pk, association_resource):
2527
queryset = getattr(self.Model.objects.get(pk=pk), association_resource).all()
2628

2729
params = request.GET.dict()
30+
31+
t2 = time.time()
2832
# enhance queryset
2933
queryset = self.enhance_queryset(queryset, RelatedModel, params, request, apply_pagination=False)
34+
for _ in queryset[0:1]: # force SQL request execution
35+
pass
3036

37+
t3 = time.time()
38+
logger.warning(f"-- timing enhance_queryset: {(t3 - t2):.2f} seconds")
3139
# handle smart fields
3240
self.handle_smart_fields(queryset, RelatedModel._meta.db_table, parse_qs(params), many=True)
3341

42+
t4 = time.time()
43+
logger.warning(f"-- timing smart fields: {(t4 - t3):.2f} seconds")
3444
# json api serializer
3545
data = self.serialize(queryset, RelatedModel, params)
3646

47+
t5 = time.time()
48+
logger.warning(f"-- timing json api serialization: {(t5 - t4):.2f} seconds")
3749
response = self.csv_response(params['filename'])
3850

3951
field_names_requested = [x for x in params[f'fields[{RelatedModel._meta.db_table}]'].split(',')]
@@ -42,4 +54,7 @@ def get(self, request, pk, association_resource):
4254
writer = csv.DictWriter(response, fieldnames=field_names_requested)
4355
writer.writerow(dict(zip(field_names_requested, csv_header)))
4456
self.fill_csv(data, writer, params)
57+
t6 = time.time()
58+
logger.warning(f"-- timing csv serialization into response body: {(t6 - t5):.2f} seconds")
59+
logger.warning(f"--- total timing: {(t6 - t0):.2f} seconds")
4560
return response

0 commit comments

Comments
 (0)