Fixed waveform flow and socket.io push

This commit is contained in:
Fergal Moran
2015-08-10 21:25:13 +01:00
parent 9766ba2c4c
commit 275ca511e2
3 changed files with 18 additions and 11 deletions

View File

@@ -3,7 +3,7 @@ import os
from django.core.exceptions import PermissionDenied, ObjectDoesNotExist
from django.core.files.base import ContentFile
from django.core.files.storage import FileSystemStorage, default_storage
from django.core.files.storage import FileSystemStorage
from django.db.models import Count
from django.http.response import HttpResponse
from rest_framework import viewsets
@@ -17,9 +17,8 @@ from rest_framework.status import HTTP_202_ACCEPTED, HTTP_401_UNAUTHORIZED, HTTP
HTTP_200_OK, HTTP_204_NO_CONTENT
from api import serializers
from core.utils import cdn
from dss import settings
from spa.tasks import create_waveform_task, upload_to_cdn_task
from spa import tasks
from spa.models.genre import Genre
from spa.models.activity import ActivityPlay
from spa.models.mix import Mix
@@ -187,13 +186,13 @@ class PartialMixUploadView(views.APIView):
logger.debug("Processing input_file: {0}".format(input_file))
logger.debug("Connecting to broker: {0}".format(settings.BROKER_URL))
from celery import group
(create_waveform_task.s(input_file, uid) |
group(
upload_to_cdn_task.s(filetype='mp3', uid=uid, container_name='mixes'),
upload_to_cdn_task.s(filetype='png', uid=uid, container_name='waveforms')
)
).delay()
from celery import group, chain
(
tasks.create_waveform_task.s(input_file, uid) |
tasks.upload_to_cdn_task.subtask(('mp3', uid, 'mixes'), immutable=True) |
tasks.upload_to_cdn_task.subtask(('png', uid, 'waveforms'), immutable=True) |
tasks.notify_subscriber.subtask((request.user.userprofile.get_session_id(), uid), immutable=True)
).delay()
logger.debug("Waveform task started")
except Exception, ex:

View File

@@ -4,6 +4,7 @@ from django.db.models.signals import post_save, pre_save, m2m_changed
from django.dispatch import Signal, receiver
from django.contrib.auth.models import User
from core.realtime import activity
from core.utils.audio.mp3 import mp3_length
from spa.models.activity import ActivityFollow

View File

@@ -1,6 +1,7 @@
from celery.task import task
import os
import logging
from core.realtime import activity
from core.utils import cdn
from spa.signals import waveform_generated_signal
@@ -30,7 +31,7 @@ def create_waveform_task(in_file, uid):
@task(timse_limit=3600)
def upload_to_cdn_task(in_file, filetype, uid, container_name):
def upload_to_cdn_task(filetype, uid, container_name):
source_file = os.path.join(settings.CACHE_ROOT, '{0}/{1}.{2}'.format(container_name, uid, filetype))
logger.info("Sending {0} to azure".format(uid))
try:
@@ -53,3 +54,9 @@ def update_geo_info_task(ip_address, profile_id):
except Exception, e:
logger.exception(e)
pass
@task
def notify_subscriber(session_id, uid):
if session_id is not None:
activity.post_activity('user:message', session_id, {'type': 'waveform', 'target': uid})