HTTP callback fixes

- Added HTTPError catching around the callback request, to not mark the
  entry as failed, just log the exception.
- Fixed bug where I forgot to actually fetch the entry before passing it
  to json_processing_callback.
- Changed __main__ migration #6 to create the ProcessingMetaData table
  as it is currently, to prevent possible breakage if a siteadmin
  is lagging behind with his db migrations and more than one migration
  wants to fix stuff with the ProcessingMetaData table.
This commit is contained in:
Joar Wandborg 2012-09-25 01:06:25 +02:00
parent 5354f954dc
commit 939d57a022
3 changed files with 21 additions and 6 deletions

View File

@ -106,5 +106,13 @@ def add_mediaentry_collected(db_conn):
@RegisterMigration(6, MIGRATIONS)
def create_processing_metadata_table(db):
ProcessingMetaData.__table__.create(db.bind)
metadata = MetaData(bind=db.bind)
metadata_table = Table('core__processing_metadata', metadata,
Column('id', Integer, primary_key=True),
Column('media_entry_id', Integer, ForeignKey(MediaEntry.id),
nullable=False, index=True),
Column('callback_url', Unicode))
metadata_table.create()
db.commit()

View File

@ -96,5 +96,5 @@ class ProcessMedia(Task):
entry_id = args[0]
mark_entry_failed(entry_id, exc)
entry = mgg.database.MediaEntry.query.filter_by(id=entry_id)
entry = mgg.database.MediaEntry.query.filter_by(id=entry_id).first()
json_processing_callback(entry)

View File

@ -16,8 +16,9 @@
import logging
import json
import traceback
from urllib2 import urlopen, Request
from urllib2 import urlopen, Request, HTTPError
from urllib import urlencode
_log = logging.getLogger(__name__)
@ -67,7 +68,13 @@ def json_processing_callback(entry):
headers=headers,
data_parser=json.dumps)
try:
urlopen(request)
_log.debug('Processing callback for {0} sent'.format(entry))
return True
except HTTPError:
_log.error('Failed to send callback: {0}'.format(
traceback.format_exc()))
return False