Switch over media processor to use the get_workbench decorator (#565)
[mediagoblin.git] / mediagoblin / media_types / image / processing.py
index bf4640699b5a35746fad183b3997cc197b7f3583..e6a34ca004e44a3f011f3fcdcba96b1d27629948 100644 (file)
@@ -19,6 +19,7 @@ import os
 import logging
 
 from mediagoblin import mg_globals as mgg
+from mediagoblin.decorators import get_workbench
 from mediagoblin.processing import BadMediaFail, \
     create_pub_filepath, FilenameBuilder
 from mediagoblin.tools.exif import exif_fix_image_orientation, \
@@ -76,11 +77,13 @@ def sniff_handler(media_file, **kw):
     return False
 
 
-def process_image(entry):
-    """
-    Code to process an image
+@get_workbench
+def process_image(entry, workbench=None):
+    """Code to process an image. Will be run by celery.
+
+    A Workbench() represents a local tempory dir. It is automatically
+    cleaned up when this function exits.
     """
-    workbench = mgg.workbench_manager.create_workbench()
     # Conversions subdirectory to avoid collisions
     conversions_subdir = os.path.join(
         workbench.dir, 'conversions')
@@ -147,8 +150,6 @@ def process_image(entry):
             gps_data['gps_' + key] = gps_data.pop(key)
         entry.media_data_init(**gps_data)
 
-    # clean up workbench
-    workbench.destroy_self()
 
 if __name__ == '__main__':
     import sys