profiling
authorMarcin Koziej <marcin.koziej@nowoczesnapolska.org.pl>
Wed, 12 Sep 2012 14:59:40 +0000 (16:59 +0200)
committerMarcin Koziej <marcin.koziej@nowoczesnapolska.org.pl>
Wed, 12 Sep 2012 14:59:40 +0000 (16:59 +0200)
apps/catalogue/management/commands/importbooks.py
apps/search/index.py
apps/wolnelektury_core/management/profile.py [new file with mode: 0644]

index 8f181cf..c1a7430 100644 (file)
@@ -11,6 +11,10 @@ from django.core.management.base import BaseCommand
 from django.core.management.color import color_style
 from django.core.files import File
 
+from wolnelektury_core.management.profile import profile
+import objgraph
+import gc
+
 from catalogue.models import Book
 from picture.models import Picture
 
@@ -60,11 +64,12 @@ class Command(BaseCommand):
         picture = Picture.from_xml_file(file_path, overwrite=options.get('force'))
         return picture
 
+    #    @profile
     def handle(self, *directories, **options):
         from django.db import transaction
 
         self.style = color_style()
-
+        
         verbose = options.get('verbose')
         force = options.get('force')
         show_traceback = options.get('traceback', False)
@@ -123,10 +128,15 @@ class Command(BaseCommand):
                         if import_picture:
                             self.import_picture(file_path, options)
                         else:
+                            objgraph.show_growth()
                             self.import_book(file_path, options)
+                            objgraph.show_growth()
+                            print "--------------------"
+                            
                         files_imported += 1
                         transaction.commit()
-
+                        ## track.
+                        
                     except (Book.AlreadyExists, Picture.AlreadyExists):
                         print self.style.ERROR('%s: Book or Picture already imported. Skipping. To overwrite use --force.' %
                             file_path)
index 556bbfe..26da062 100644 (file)
@@ -146,6 +146,7 @@ class Index(SolrIndex):
         Removes all tags from index, then index them again.
         Indexed fields include: id, name (with and without polish stems), category
         """
+        log.debug("Indexing tags")
         remove_only = kw.get('remove_only', False)
         # first, remove tags from index.
         if tags:
diff --git a/apps/wolnelektury_core/management/profile.py b/apps/wolnelektury_core/management/profile.py
new file mode 100644 (file)
index 0000000..a68453d
--- /dev/null
@@ -0,0 +1,16 @@
+
+import cProfile
+import functools
+
+_object = None
+
+def profile(meth):
+    def _wrapper(self, *args, **kwargs):
+        object = self
+        setattr(object, "__%s" % meth.__name__, meth)
+        cProfile.runctx('object.__%s(object, *args, **kwargs)' % (meth.__name__, ), globals(), locals(),
+            "wlprofile")
+
+    functools.update_wrapper(_wrapper, meth)
+    return _wrapper
+