Improved some error handling

This commit is contained in:
Agate 2020-06-14 15:09:14 +02:00
parent b853f38c74
commit 45132dea75
No known key found for this signature in database
GPG Key ID: 6B501DFD73514E14
2 changed files with 12 additions and 3 deletions

View File

@ -23,6 +23,7 @@ from funkwhale_api.taskapp import celery
from . import activity from . import activity
from . import actors from . import actors
from . import exceptions
from . import jsonld from . import jsonld
from . import keys from . import keys
from . import models, signing from . import models, signing
@ -212,7 +213,11 @@ def update_domain_nodeinfo(domain):
if service_actor_id if service_actor_id
else None else None
) )
except (serializers.serializers.ValidationError, RequestException) as e: except (
serializers.serializers.ValidationError,
RequestException,
exceptions.BlockedActorOrDomain,
) as e:
logger.warning( logger.warning(
"Cannot fetch system actor for domain %s: %s", domain.name, str(e) "Cannot fetch system actor for domain %s: %s", domain.name, str(e)
) )

View File

@ -2,7 +2,6 @@ import base64
import datetime import datetime
import logging import logging
import urllib.parse import urllib.parse
from django.conf import settings from django.conf import settings
from django.db import transaction from django.db import transaction
from django.db.models import Count, Prefetch, Sum, F, Q from django.db.models import Count, Prefetch, Sum, F, Q
@ -15,6 +14,8 @@ from rest_framework import views, viewsets
from rest_framework.decorators import action from rest_framework.decorators import action
from rest_framework.response import Response from rest_framework.response import Response
import requests.exceptions
from funkwhale_api.common import decorators as common_decorators from funkwhale_api.common import decorators as common_decorators
from funkwhale_api.common import permissions as common_permissions from funkwhale_api.common import permissions as common_permissions
from funkwhale_api.common import preferences from funkwhale_api.common import preferences
@ -532,7 +533,10 @@ def handle_serve(
actor = user.actor actor = user.actor
else: else:
actor = actors.get_service_actor() actor = actors.get_service_actor()
f.download_audio_from_remote(actor=actor) try:
f.download_audio_from_remote(actor=actor)
except requests.exceptions.RequestException:
return Response({"detail": "Remove track is unavailable"}, status=503)
data = f.get_audio_data() data = f.get_audio_data()
if data: if data:
f.duration = data["duration"] f.duration = data["duration"]