Make a query before spawning cache actor task

This commit is contained in:
Thomas Sileo 2019-08-11 13:56:18 +02:00
parent 075d3c3742
commit 2a726b7dfb
3 changed files with 13 additions and 2 deletions

View file

@ -1,6 +1,7 @@
import pymongo
from config import DB
from config import MEDIA_CACHE
from core.meta import MetaKey
from core.meta import _meta
@ -73,3 +74,6 @@ def create_indexes():
("meta.deleted", pymongo.ASCENDING),
]
)
# For the is_actor_icon_cached query
MEDIA_CACHE.fs._GridFS__files.create_index([("url", 1), ("kind", 1)])

View file

@ -4,6 +4,7 @@ from datetime import timezone
from poussetaches import PousseTaches
from config import MEDIA_CACHE
from utils import parse_datetime
p = PousseTaches(
@ -25,7 +26,10 @@ class Tasks:
)
@staticmethod
def cache_actor_icon(icon_url: str, actor_iri: str):
def cache_actor_icon(icon_url: str, actor_iri: str) -> None:
if MEDIA_CACHE.is_actor_icon_cached(icon_url):
return None
p.push({"icon_url": icon_url, "actor_iri": actor_iri}, "/task/cache_actor_icon")
@staticmethod

View file

@ -136,8 +136,11 @@ class MediaCache(object):
remote_id=remote_id,
)
def is_actor_icon_cached(self, url: str) -> bool:
return bool(self.fs.find_one({"url": url, "kind": Kind.ACTOR_ICON.value}))
def cache_actor_icon(self, url: str) -> None:
if self.fs.find_one({"url": url, "kind": Kind.ACTOR_ICON.value}):
if self.is_actor_icon_cached(url):
return
i = load(url, self.user_agent)
for size in [50, 80]: