Solved issue with video uploading.

Filenames were updated at GCS upon a node save, also for files that aren't
saved to GCS yet (i.e. when Zencoder is still encoding). Now we just
skip non-existing files.
This commit is contained in:
Sybren A. Stüvel 2016-05-27 16:21:03 +02:00
parent f6721c76cc
commit c6e191365b

View File

@ -1,12 +1,15 @@
import os import os
import time import time
import datetime import datetime
import bugsnag import logging
from bson import ObjectId from bson import ObjectId
from gcloud.storage.client import Client from gcloud.storage.client import Client
from gcloud.exceptions import NotFound from gcloud.exceptions import NotFound
from flask import current_app from flask import current_app
log = logging.getLogger(__name__)
class GoogleCloudStorageBucket(object): class GoogleCloudStorageBucket(object):
"""Cloud Storage bucket interface. We create a bucket for every project. In """Cloud Storage bucket interface. We create a bucket for every project. In
@ -176,6 +179,10 @@ def update_file_name(node):
_, override_ext = os.path.splitext(v['file_path']) _, override_ext = os.path.splitext(v['file_path'])
name = _format_name(node['name'], override_ext, v['size'], map_type=map_type) name = _format_name(node['name'], override_ext, v['size'], map_type=map_type)
blob = storage.Get(v['file_path'], to_dict=False) blob = storage.Get(v['file_path'], to_dict=False)
if blob is None:
log.info('Unable to find blob for file %s in project %s. This can happen if the '
'video encoding is still processing.', v['file_path'], node['project'])
continue
storage.update_name(blob, name) storage.update_name(blob, name)
# Currently we search for 'file' and 'files' keys in the object properties. # Currently we search for 'file' and 'files' keys in the object properties.