aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorElrond <elrond+mediagoblin.org@samba-tng.org>2012-12-17 19:54:26 +0100
committerElrond <elrond+mediagoblin.org@samba-tng.org>2012-12-26 23:42:26 +0100
commit86bb44ef121e64e2a2c7ad175af444000a7ca0c9 (patch)
tree594c719ca85b7a8263b28bf6f949a07e9f9b86fb
parentbe1f0f7d33440d96c2bcc1c7f3dfd5cbb356e54f (diff)
downloadmediagoblin-86bb44ef121e64e2a2c7ad175af444000a7ca0c9.tar.lz
mediagoblin-86bb44ef121e64e2a2c7ad175af444000a7ca0c9.tar.xz
mediagoblin-86bb44ef121e64e2a2c7ad175af444000a7ca0c9.zip
Factor out the actual calling of the processing.
Calling the processing task and handling the exceptions is easy, but has a bunch of caveats, so factor it out into an easy callable function.
-rw-r--r--mediagoblin/submit/lib.py24
-rw-r--r--mediagoblin/submit/views.py23
2 files changed, 26 insertions, 21 deletions
diff --git a/mediagoblin/submit/lib.py b/mediagoblin/submit/lib.py
index 57069e84..f174d4ea 100644
--- a/mediagoblin/submit/lib.py
+++ b/mediagoblin/submit/lib.py
@@ -17,12 +17,36 @@
import urllib
import urllib2
import logging
+from celery import registry
from mediagoblin import mg_globals
+from mediagoblin.processing import mark_entry_failed
+from mediagoblin.processing.task import ProcessMedia
+
_log = logging.getLogger(__name__)
+def run_process_media(entry):
+ process_media = registry.tasks[ProcessMedia.name]
+ try:
+ process_media.apply_async(
+ [unicode(entry.id)], {},
+ task_id=entry.queued_task_id)
+ except BaseException as exc:
+ # The purpose of this section is because when running in "lazy"
+ # or always-eager-with-exceptions-propagated celery mode that
+ # the failure handling won't happen on Celery end. Since we
+ # expect a lot of users to run things in this way we have to
+ # capture stuff here.
+ #
+ # ... not completely the diaper pattern because the
+ # exception is re-raised :)
+ mark_entry_failed(entry.id, exc)
+ # re-raise the exception
+ raise
+
+
def handle_push_urls(request):
if mg_globals.app_config["push_urls"]:
feed_url = request.urlgen(
diff --git a/mediagoblin/submit/views.py b/mediagoblin/submit/views.py
index 6d4c8be3..ad9fedae 100644
--- a/mediagoblin/submit/views.py
+++ b/mediagoblin/submit/views.py
@@ -19,7 +19,6 @@ import mediagoblin.mg_globals as mg_globals
import uuid
from os.path import splitext
-from celery import registry
import logging
_log = logging.getLogger(__name__)
@@ -32,12 +31,10 @@ from mediagoblin.tools.translate import pass_to_ugettext as _
from mediagoblin.tools.response import render_to_response, redirect
from mediagoblin.decorators import require_active_login
from mediagoblin.submit import forms as submit_forms
-from mediagoblin.processing import mark_entry_failed
-from mediagoblin.processing.task import ProcessMedia
from mediagoblin.messages import add_message, SUCCESS
from mediagoblin.media_types import sniff_media, \
InvalidFileType, FileTypeNotSupported
-from mediagoblin.submit.lib import handle_push_urls
+from mediagoblin.submit.lib import handle_push_urls, run_process_media
@require_active_login
@@ -115,23 +112,7 @@ def submit_start(request):
#
# (... don't change entry after this point to avoid race
# conditions with changes to the document via processing code)
- process_media = registry.tasks[ProcessMedia.name]
- try:
- process_media.apply_async(
- [unicode(entry.id)], {},
- task_id=task_id)
- except BaseException as exc:
- # The purpose of this section is because when running in "lazy"
- # or always-eager-with-exceptions-propagated celery mode that
- # the failure handling won't happen on Celery end. Since we
- # expect a lot of users to run things in this way we have to
- # capture stuff here.
- #
- # ... not completely the diaper pattern because the
- # exception is re-raised :)
- mark_entry_failed(entry.id, exc)
- # re-raise the exception
- raise
+ run_process_media(entry)
handle_push_urls(request)