import os from .models import Video, READY from .s3_uploader import upload_file from .utils import asset_upload from cp_video.celery import app @app.task(soft_time_limit=60) def send_video_to_s3(): local_videos = Video.objects.filter(local_file__isnull=False) for local_video in local_videos: video_name = local_video.local_file.name.split('/')[-1] key = asset_upload(local_video, video_name) content = local_video.local_file.read() local_video.s3_file = upload_file(content, key, 'video/mp4') local_video.status = READY local_video.save(update_fields=['s3_file', 'status']) os.remove(local_video.local_file.path) local_videos.update(local_file=None)