mirror of
https://code.eliotberriot.com/funkwhale/funkwhale.git
synced 2025-10-04 05:39:16 +02:00
Avoid fetching Actor object on every request authentication
This commit is contained in:
parent
e0fce26820
commit
6dcde77b1e
8 changed files with 63 additions and 17 deletions
|
@ -1,3 +1,4 @@
|
|||
import datetime
|
||||
import logging
|
||||
import uuid
|
||||
import xml
|
||||
|
@ -49,11 +50,20 @@ def get_actor_data(actor_url):
|
|||
|
||||
|
||||
def get_actor(actor_url):
|
||||
try:
|
||||
actor = models.Actor.objects.get(url=actor_url)
|
||||
except models.Actor.DoesNotExist:
|
||||
actor = None
|
||||
fetch_delta = datetime.timedelta(
|
||||
minutes=settings.FEDERATION_ACTOR_FETCH_DELAY)
|
||||
if actor and actor.last_fetch_date > timezone.now() - fetch_delta:
|
||||
# cache is hot, we can return as is
|
||||
return actor
|
||||
data = get_actor_data(actor_url)
|
||||
serializer = serializers.ActorSerializer(data=data)
|
||||
serializer.is_valid(raise_exception=True)
|
||||
|
||||
return serializer.build()
|
||||
return serializer.save(last_fetch_date=timezone.now())
|
||||
|
||||
|
||||
class SystemActor(object):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue