From 3b079526a2ea78b68555094ca498faea31022759 Mon Sep 17 00:00:00 2001 From: Andrew Godwin Date: Sun, 27 Nov 2022 17:05:31 -0700 Subject: User fetching and inbox message cleaning --- users/models/identity.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) (limited to 'users/models/identity.py') diff --git a/users/models/identity.py b/users/models/identity.py index 805755a..6957526 100644 --- a/users/models/identity.py +++ b/users/models/identity.py @@ -23,19 +23,31 @@ from users.models.system_actor import SystemActor class IdentityStates(StateGraph): - outdated = State(try_interval=3600) - updated = State() + """ + There are only two states in a cycle. + Identities sit in "updated" for up to system.identity_max_age, and then + go back to "outdated" for refetching. + """ + + outdated = State(try_interval=3600, force_initial=True) + updated = State(try_interval=86400, attempt_immediately=False) outdated.transitions_to(updated) + updated.transitions_to(outdated) @classmethod async def handle_outdated(cls, identity: "Identity"): # Local identities never need fetching if identity.local: - return "updated" + return cls.updated # Run the actor fetch and progress to updated if it succeeds if await identity.fetch_actor(): - return "updated" + return cls.updated + + @classmethod + async def handle_updated(cls, instance: "Identity"): + if instance.state_age > Config.system.identity_max_age: + return cls.outdated class Identity(StatorModel): -- cgit v1.2.3