Add OnDemandHandler to support on-demand timers easier

This commit is contained in:
Griatch 2024-02-04 00:12:40 +01:00
parent 9f1d14bae2
commit 42aba18ada
15 changed files with 1121 additions and 52 deletions

View file

@ -5,13 +5,12 @@ Module containing the task handler for Evennia deferred tasks, persistent or not
from datetime import datetime, timedelta
from pickle import PickleError
from twisted.internet import reactor
from twisted.internet.defer import CancelledError as DefCancelledError
from twisted.internet.task import deferLater
from evennia.server.models import ServerConfig
from evennia.utils.dbserialize import dbserialize, dbunserialize
from evennia.utils.logger import log_err
from twisted.internet import reactor
from twisted.internet.defer import CancelledError as DefCancelledError
from twisted.internet.task import deferLater
TASK_HANDLER = None
@ -204,7 +203,7 @@ class TaskHandlerTask:
return self.task_id
class TaskHandler(object):
class TaskHandler:
"""A light singleton wrapper allowing to access permanent tasks.
@ -236,7 +235,7 @@ class TaskHandler(object):
"""
to_save = False
value = ServerConfig.objects.conf("delayed_tasks", default={})
value = ServerConfig.objects.conf("delayed_tasks", default=dict)
if isinstance(value, str):
tasks = dbunserialize(value)
else: