def run(self, task_queue, uid, document_type, callback_url, callback_verb, expire, cloudooo_settings, sam_settings): print 'Metadata extraction started...' self._sam = Restfulie.at(sam_settings['url']).auth(*sam_settings['auth']).as_('application/json') cloudooo = Server("%s/RPC2" % cloudooo_settings['url']) response = loads(self._sam.get(key=uid).body) doc = response['data']['file'] filename = response['data']['filename'] if not filename.endswith('pdf'): print "Converting document to pdf..." doc = cloudooo.convertFile(doc, filename[-3:], 'pdf') temp_doc = TemporaryFile(suffix=filename[:-3] + "pdf", delete=False) print temp_doc.name, filename temp_doc.write(decodestring(doc)) temp_doc.close() extractor = {'tcc': TccExtractor, 'event': EventExtractor} print "Extracting the metadata..." metadata = extractor[document_type](temp_doc.name).all_metadata() metadata_key = self._sam.post(value=metadata, expire=expire).resource().key response['data']['metadata_key'] = metadata_key self._sam.put(key=uid, value=response['data']).resource() print "Metadata extraction complete. Sending callback task..." send_task('nsicloudooomanager.tasks.MetadataCallback', args=(callback_url, callback_verb, uid, metadata_key), queue=task_queue, routing_key=task_queue) print "Metadata callback task sent."