See #689: added a task to refresh nodeinfo data on known domain periodically

This commit is contained in:
Eliot Berriot 2019-04-11 11:14:27 +02:00
parent b45cada689
commit 84e2f0af9f
No known key found for this signature in database
GPG key ID: DD6965E2476E5C27
3 changed files with 48 additions and 0 deletions

View file

@ -212,6 +212,22 @@ def update_domain_nodeinfo(domain):
domain.save(update_fields=["nodeinfo", "nodeinfo_fetch_date", "service_actor"])
@celery.app.task(name="federation.refresh_nodeinfo_known_nodes")
def refresh_nodeinfo_known_nodes():
"""
Trigger a node info refresh on all nodes that weren't refreshed since
settings.NODEINFO_REFRESH_DELAY
"""
limit = timezone.now() - datetime.timedelta(seconds=settings.NODEINFO_REFRESH_DELAY)
candidates = models.Domain.objects.external().exclude(
nodeinfo_fetch_date__gte=limit
)
names = candidates.values_list("name", flat=True)
logger.info("Launching periodic nodeinfo refresh on %s domains", len(names))
for domain_name in names:
update_domain_nodeinfo.delay(domain_name=domain_name)
def delete_qs(qs):
label = qs.model._meta.label
result = qs.delete()