Add SoundCloud delete functionality and fixes; implement TaskManager to run background jobs
This commit is contained in:
parent
706d7db2b2
commit
3902c8c746
15 changed files with 373 additions and 127 deletions
|
@ -23,23 +23,15 @@ def parse_rmq_config(rmq_config):
|
|||
|
||||
# Celery amqp settings
|
||||
BROKER_URL = get_rmq_broker()
|
||||
CELERY_RESULT_BACKEND = 'amqp' # Use RabbitMQ as the celery backend
|
||||
CELERY_RESULT_PERSISTENT = True # Persist through a broker restart
|
||||
CELERY_TASK_RESULT_EXPIRES = 300 # Expire task results after 5 minutes
|
||||
CELERY_TRACK_STARTED = False
|
||||
CELERY_RESULT_EXCHANGE = 'airtime-results'
|
||||
CELERY_RESULT_BACKEND = 'amqp' # Use RabbitMQ as the celery backend
|
||||
CELERY_RESULT_PERSISTENT = True # Persist through a broker restart
|
||||
CELERY_TASK_RESULT_EXPIRES = 600 # Expire task results after 10 minutes
|
||||
CELERY_RESULT_EXCHANGE = 'celeryresults' # Default exchange - needed due to php-celery
|
||||
CELERY_QUEUES = (
|
||||
Queue('soundcloud-uploads', exchange=Exchange('soundcloud-uploads'), routing_key='soundcloud-uploads'),
|
||||
Queue('airtime-results.soundcloud-uploads', exchange=Exchange('airtime-results')),
|
||||
)
|
||||
CELERY_ROUTES = (
|
||||
{
|
||||
'soundcloud_uploads.tasks.upload_to_soundcloud': {
|
||||
'exchange': 'airtime-results',
|
||||
'queue': 'airtime-results.soundcloud-uploads',
|
||||
}
|
||||
},
|
||||
Queue('soundcloud', exchange=Exchange('soundcloud'), routing_key='soundcloud'),
|
||||
Queue(exchange=Exchange('celeryresults'), auto_delete=True),
|
||||
)
|
||||
CELERY_EVENT_QUEUE_EXPIRES = 600 # RabbitMQ x-expire after 10 minutes
|
||||
|
||||
# Celery task settings
|
||||
CELERY_TASK_SERIALIZER = 'json'
|
||||
|
|
|
@ -9,8 +9,8 @@ celery = Celery()
|
|||
logger = get_task_logger(__name__)
|
||||
|
||||
|
||||
@celery.task(name='upload-to-soundcloud')
|
||||
def upload_to_soundcloud(data, token, file_path):
|
||||
@celery.task(name='soundcloud-upload')
|
||||
def soundcloud_upload(data, token, file_path):
|
||||
"""
|
||||
Upload a file to SoundCloud
|
||||
|
||||
|
@ -32,3 +32,22 @@ def upload_to_soundcloud(data, token, file_path):
|
|||
raise e
|
||||
data['asset_data'].close()
|
||||
return json.dumps(track.fields())
|
||||
|
||||
@celery.task(name='soundcloud-delete')
|
||||
def soundcloud_delete(token, track_id):
|
||||
"""
|
||||
Delete a file from SoundCloud
|
||||
|
||||
:param token: OAuth2 client access token
|
||||
|
||||
:return: the SoundCloud response object
|
||||
:rtype: dict
|
||||
"""
|
||||
client = soundcloud.Client(access_token=token)
|
||||
try:
|
||||
logger.info('Deleting track with ID {0}'.format(track_id))
|
||||
track = client.delete('/tracks/%s' % track_id)
|
||||
except Exception as e:
|
||||
logger.info('Error deleting track!')
|
||||
raise e
|
||||
return json.dumps(track.fields())
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue