evennia/docs/latest/api/evennia.scripts.taskhandler.html

695 lines
50 KiB
HTML
Raw Normal View History

2025-08-15 18:14:21 +00:00
<!DOCTYPE html>
<html lang="en" data-content_root="../">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<title>evennia.scripts.taskhandler &#8212; Evennia latest documentation</title>
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=d75fae25" />
<link rel="stylesheet" type="text/css" href="../_static/nature.css?v=279e0f84" />
<link rel="stylesheet" type="text/css" href="../_static/custom.css?v=e4a91a55" />
<script src="../_static/documentation_options.js?v=c6e86fd7"></script>
<script src="../_static/doctools.js?v=9bcbadda"></script>
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
<link rel="icon" href="../_static/favicon.ico"/>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="evennia.scripts.tickerhandler" href="evennia.scripts.tickerhandler.html" />
<link rel="prev" title="evennia.scripts.scripts" href="evennia.scripts.scripts.html" />
</head><body>
<div class="related" role="navigation" aria-label="Related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="evennia.scripts.tickerhandler.html" title="evennia.scripts.tickerhandler"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="evennia.scripts.scripts.html" title="evennia.scripts.scripts"
accesskey="P">previous</a> |</li>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="../Evennia-API.html" >API Summary</a> &#187;</li>
<li class="nav-item nav-item-2"><a href="evennia-api.html" >evennia</a> &#187;</li>
<li class="nav-item nav-item-3"><a href="evennia.html" >evennia</a> &#187;</li>
<li class="nav-item nav-item-4"><a href="evennia.scripts.html" accesskey="U">evennia.scripts</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">evennia.scripts.taskhandler</a></li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<section id="module-evennia.scripts.taskhandler">
<span id="evennia-scripts-taskhandler"></span><h1>evennia.scripts.taskhandler<a class="headerlink" href="#module-evennia.scripts.taskhandler" title="Link to this heading"></a></h1>
<p>Module containing the task handler for Evennia deferred tasks, persistent or not.</p>
<dl class="py function">
<dt class="sig sig-object py" id="evennia.scripts.taskhandler.handle_error">
<span class="sig-prename descclassname"><span class="pre">evennia.scripts.taskhandler.</span></span><span class="sig-name descname"><span class="pre">handle_error</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/taskhandler.html#handle_error"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.taskhandler.handle_error" title="Link to this definition"></a></dt>
<dd><p>Handle errors within deferred objects.</p>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="evennia.scripts.taskhandler.TaskHandlerTask">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">evennia.scripts.taskhandler.</span></span><span class="sig-name descname"><span class="pre">TaskHandlerTask</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">task_id</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/taskhandler.html#TaskHandlerTask"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandlerTask" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>An object to represent a single TaskHandler task.</p>
<dl class="simple">
<dt>Instance Attributes:</dt><dd><p>task_id (int): the global id for this task
deferred (deferred): a reference to this tasks deferred</p>
</dd>
<dt>Property Attributes:</dt><dd><p>paused (bool): check if the deferred instance of a task has been paused.
called(self): A task attribute to check if the deferred instance of a task has been called.</p>
</dd>
</dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.taskhandler.TaskHandlerTask.pause">
<span class="sig-name descname"><span class="pre">pause</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/taskhandler.html#TaskHandlerTask.pause"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandlerTask.pause" title="Link to this definition"></a></dt>
<dd><p>Pause the callback of a task.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.taskhandler.TaskHandlerTask.unpause">
<span class="sig-name descname"><span class="pre">unpause</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/taskhandler.html#TaskHandlerTask.unpause"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandlerTask.unpause" title="Link to this definition"></a></dt>
<dd><p>Process all callbacks made since pause() was called.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.taskhandler.TaskHandlerTask.do_task">
<span class="sig-name descname"><span class="pre">do_task</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/taskhandler.html#TaskHandlerTask.do_task"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandlerTask.do_task" title="Link to this definition"></a></dt>
<dd><p>Execute the task (call its callback).</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.taskhandler.TaskHandlerTask.call">
<span class="sig-name descname"><span class="pre">call</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/taskhandler.html#TaskHandlerTask.call"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandlerTask.call" title="Link to this definition"></a></dt>
<dd><p>Call the callback of this task.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.taskhandler.TaskHandlerTask.remove">
<span class="sig-name descname"><span class="pre">remove</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/taskhandler.html#TaskHandlerTask.remove"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandlerTask.remove" title="Link to this definition"></a></dt>
<dd><p>Remove a task without executing it.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.taskhandler.TaskHandlerTask.cancel">
<span class="sig-name descname"><span class="pre">cancel</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/taskhandler.html#TaskHandlerTask.cancel"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandlerTask.cancel" title="Link to this definition"></a></dt>
<dd><p>Stop a task from automatically executing.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.taskhandler.TaskHandlerTask.active">
<span class="sig-name descname"><span class="pre">active</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/taskhandler.html#TaskHandlerTask.active"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandlerTask.active" title="Link to this definition"></a></dt>
<dd><p>Check if a task is active (has not been called yet).</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.taskhandler.TaskHandlerTask.exists">
<span class="sig-name descname"><span class="pre">exists</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/taskhandler.html#TaskHandlerTask.exists"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandlerTask.exists" title="Link to this definition"></a></dt>
<dd><p>Check if a task exists.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.taskhandler.TaskHandlerTask.get_id">
<span class="sig-name descname"><span class="pre">get_id</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/taskhandler.html#TaskHandlerTask.get_id"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandlerTask.get_id" title="Link to this definition"></a></dt>
<dd><p>Returns the global id for this task. For use with</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.taskhandler.TaskHandlerTask.__init__">
<span class="sig-name descname"><span class="pre">__init__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">task_id</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/taskhandler.html#TaskHandlerTask.__init__"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandlerTask.__init__" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.taskhandler.TaskHandlerTask.get_deferred">
<span class="sig-name descname"><span class="pre">get_deferred</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/taskhandler.html#TaskHandlerTask.get_deferred"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandlerTask.get_deferred" title="Link to this definition"></a></dt>
<dd><p>Return the instance of the deferred the task id is using.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p><p><em>bool or deferred</em> </p>
<dl class="simple">
<dt>An instance of a deferred or False if there is no task with the id.</dt><dd><p>None is returned if there is no deferred affiliated with this id.</p>
</dd>
</dl>
</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="id0">
<span class="sig-name descname"><span class="pre">pause</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/taskhandler.html#TaskHandlerTask.pause"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#id0" title="Link to this definition"></a></dt>
<dd><p>Pause the callback of a task.
To resume use <strong>TaskHandlerTask.unpause</strong>.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="id1">
<span class="sig-name descname"><span class="pre">unpause</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/taskhandler.html#TaskHandlerTask.unpause"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#id1" title="Link to this definition"></a></dt>
<dd><p>Unpause a task, run the task if it has passed delay time.</p>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="evennia.scripts.taskhandler.TaskHandlerTask.paused">
<em class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">paused</span></span><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandlerTask.paused" title="Link to this definition"></a></dt>
<dd><p>A task attribute to check if the deferred instance of a task has been paused.</p>
<p>This exists to mock usage of a twisted deferred object.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p><p><em>bool or None</em> </p>
<dl class="simple">
<dt>True if the task was properly paused. None if the task does not have</dt><dd><p>a deferred instance.</p>
</dd>
</dl>
</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="id2">
<span class="sig-name descname"><span class="pre">do_task</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/taskhandler.html#TaskHandlerTask.do_task"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#id2" title="Link to this definition"></a></dt>
<dd><p>Execute the task (call its callback).
If calling before timedelay, cancel the deferred instance affliated to this task.
Remove the task from the dictionary of current tasks on a successful
callback.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p><em>bool or any</em> Set to <strong>False</strong> if the task does not exist in task
handler. Otherwise it will be the return of the tasks callback.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="id3">
<span class="sig-name descname"><span class="pre">call</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/taskhandler.html#TaskHandlerTask.call"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#id3" title="Link to this definition"></a></dt>
<dd><p>Call the callback of a task.
Leave the task unaffected otherwise.
This does not use the tasks deferred instance.
The only requirement is that the task exist in task handler.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p><em>bool or any</em> Set to <strong>False</strong> if the task does not exist in task
handler. Otherwise it will be the return of the tasks callback.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="id4">
<span class="sig-name descname"><span class="pre">remove</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/taskhandler.html#TaskHandlerTask.remove"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#id4" title="Link to this definition"></a></dt>
<dd><p>Remove a task without executing it.
Deletes the instance of the tasks deferred.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>task_id</strong> (<em>int</em>) an existing task ID.</p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><em>bool</em> True if the removal completed successfully.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="id5">
<span class="sig-name descname"><span class="pre">cancel</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/taskhandler.html#TaskHandlerTask.cancel"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#id5" title="Link to this definition"></a></dt>
<dd><p>Stop a task from automatically executing.
This will not remove the task.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p><p><em>bool</em> </p>
<dl class="simple">
<dt>True if the cancel completed successfully.</dt><dd><p>False if the cancel did not complete successfully.</p>
</dd>
</dl>
</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="id6">
<span class="sig-name descname"><span class="pre">active</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/taskhandler.html#TaskHandlerTask.active"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#id6" title="Link to this definition"></a></dt>
<dd><p>Check if a task is active (has not been called yet).</p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p><p><em>bool</em> </p>
<dl class="simple">
<dt>True if a task is active (has not been called yet). False if</dt><dd><p>it is not (has been called) or if the task does not exist.</p>
</dd>
</dl>
</p>
</dd>
</dl>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="evennia.scripts.taskhandler.TaskHandlerTask.called">
<em class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">called</span></span><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandlerTask.called" title="Link to this definition"></a></dt>
<dd><p>A task attribute to check if the deferred instance of a task has been called.</p>
<p>This exists to mock usage of a twisted deferred object.
It will not set to True if Task.call has been called. This only happens if
tasks deferred instance calls the callback.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p><p><em>bool</em> </p>
<dl class="simple">
<dt>True if the deferred instance of this task has called the callback.</dt><dd><p>False if the deferred instnace of this task has not called the callback.</p>
</dd>
</dl>
</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="id7">
<span class="sig-name descname"><span class="pre">exists</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/taskhandler.html#TaskHandlerTask.exists"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#id7" title="Link to this definition"></a></dt>
<dd><p>Check if a task exists.
Most task handler methods check for existence for you.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p><em>bool</em> True the task exists False if it does not.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="id8">
<span class="sig-name descname"><span class="pre">get_id</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/taskhandler.html#TaskHandlerTask.get_id"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#id8" title="Link to this definition"></a></dt>
<dd><p>Returns the global id for this task. For use with
<strong>evennia.scripts.taskhandler.TASK_HANDLER</strong>.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p><em>task_id (int)</em> global task id for this task.</p>
</dd>
</dl>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="evennia.scripts.taskhandler.TaskHandler">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">evennia.scripts.taskhandler.</span></span><span class="sig-name descname"><span class="pre">TaskHandler</span></span><a class="reference internal" href="../_modules/evennia/scripts/taskhandler.html#TaskHandler"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandler" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>A light singleton wrapper allowing to access permanent tasks.</p>
<p>When <strong>utils.delay</strong> is called, the task handler is used to create
the task.</p>
<p>Task handler will automatically remove uncalled but canceled from task
handler. By default this will not occur until a canceled task
has been uncalled for 60 second after the time it should have been called.
To adjust this time use TASK_HANDLER.stale_timeout. If stale_timeout is 0
stale tasks will not be automatically removed.
This is not done on a timer. I is done as new tasks are added or the load method is called.</p>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.taskhandler.TaskHandler.__init__">
<span class="sig-name descname"><span class="pre">__init__</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/taskhandler.html#TaskHandler.__init__"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandler.__init__" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.taskhandler.TaskHandler.load">
<span class="sig-name descname"><span class="pre">load</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/taskhandler.html#TaskHandler.load"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandler.load" title="Link to this definition"></a></dt>
<dd><p>Load from the ServerConfig.</p>
<p>This should be automatically called when Evennia starts.
It populates <strong>self.tasks</strong> according to the ServerConfig.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.taskhandler.TaskHandler.clean_stale_tasks">
<span class="sig-name descname"><span class="pre">clean_stale_tasks</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/taskhandler.html#TaskHandler.clean_stale_tasks"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandler.clean_stale_tasks" title="Link to this definition"></a></dt>
<dd><p>remove uncalled but canceled from task handler.</p>
<p>By default this will not occur until a canceled task
has been uncalled for 60 second after the time it should have been called.
To adjust this time use TASK_HANDLER.stale_timeout.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.taskhandler.TaskHandler.save">
<span class="sig-name descname"><span class="pre">save</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/taskhandler.html#TaskHandler.save"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandler.save" title="Link to this definition"></a></dt>
<dd><p>Save the tasks in ServerConfig.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.taskhandler.TaskHandler.add">
<span class="sig-name descname"><span class="pre">add</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">timedelay</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">callback</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/taskhandler.html#TaskHandler.add"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandler.add" title="Link to this definition"></a></dt>
<dd><p>Add a new task.</p>
<p>If the persistent kwarg is truthy:
The callback, args and values for kwarg will be serialized. Type
and attribute errors during the serialization will be logged,
but will not throw exceptions.
For persistent tasks do not use memory references in the callback
function or arguments. After a restart those memory references are no
longer accurate.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>timedelay</strong> (<em>int</em><em> or </em><em>float</em>) time in seconds before calling the callback.</p></li>
<li><p><strong>callback</strong> (<em>function</em><em> or </em><em>instance method</em>) the callback itself</p></li>
<li><p><strong>any</strong> (<em>any</em>) any additional positional arguments to send to the callback</p></li>
<li><p><strong>*args</strong> positional arguments to pass to callback.</p></li>
<li><p><strong>**kwargs</strong> <p>keyword arguments to pass to callback.
- persistent (bool, optional): persist the task (stores it).</p>
<blockquote>
<div><p>Persistent key and value is removed from kwargs it will
not be passed to callback.</p>
</div></blockquote>
</p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><p><em>TaskHandlerTask</em> </p>
<dl class="simple">
<dt>An object to represent a task.</dt><dd><p>Reference <strong>evennia.scripts.taskhandler.TaskHandlerTask</strong> for complete details.</p>
</dd>
</dl>
</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.taskhandler.TaskHandler.exists">
<span class="sig-name descname"><span class="pre">exists</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">task_id</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/taskhandler.html#TaskHandler.exists"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandler.exists" title="Link to this definition"></a></dt>
<dd><p>Check if a task exists.
Most task handler methods check for existence for you.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>task_id</strong> (<em>int</em>) an existing task ID.</p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><em>bool</em> True the task exists False if it does not.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.taskhandler.TaskHandler.active">
<span class="sig-name descname"><span class="pre">active</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">task_id</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/taskhandler.html#TaskHandler.active"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandler.active" title="Link to this definition"></a></dt>
<dd><p>Check if a task is active (has not been called yet).</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>task_id</strong> (<em>int</em>) an existing task ID.</p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><p><em>bool</em> </p>
<dl class="simple">
<dt>True if a task is active (has not been called yet). False if</dt><dd><p>it is not (has been called) or if the task does not exist.</p>
</dd>
</dl>
</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.taskhandler.TaskHandler.cancel">
<span class="sig-name descname"><span class="pre">cancel</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">task_id</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/taskhandler.html#TaskHandler.cancel"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandler.cancel" title="Link to this definition"></a></dt>
<dd><p>Stop a task from automatically executing.
This will not remove the task.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>task_id</strong> (<em>int</em>) an existing task ID.</p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><p><em>bool</em> </p>
<dl class="simple">
<dt>True if the cancel completed successfully.</dt><dd><p>False if the cancel did not complete successfully.</p>
</dd>
</dl>
</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.taskhandler.TaskHandler.remove">
<span class="sig-name descname"><span class="pre">remove</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">task_id</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/taskhandler.html#TaskHandler.remove"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandler.remove" title="Link to this definition"></a></dt>
<dd><p>Remove a task without executing it.
Deletes the instance of the tasks deferred.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>task_id</strong> (<em>int</em>) an existing task ID.</p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><em>bool</em> True if the removal completed successfully.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.taskhandler.TaskHandler.clear">
<span class="sig-name descname"><span class="pre">clear</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">save</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">cancel</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/taskhandler.html#TaskHandler.clear"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandler.clear" title="Link to this definition"></a></dt>
<dd><p>Clear all tasks. By default tasks are canceled and removed from the database as well.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>save=True</strong> (<em>bool</em>) Should changes to persistent tasks be saved to database.</p></li>
<li><p><strong>cancel=True</strong> (<em>bool</em>) Cancel scheduled tasks before removing it from task handler.</p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><em>True (bool)</em> if the removal completed successfully.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.taskhandler.TaskHandler.call_task">
<span class="sig-name descname"><span class="pre">call_task</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">task_id</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/taskhandler.html#TaskHandler.call_task"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandler.call_task" title="Link to this definition"></a></dt>
<dd><p>Call the callback of a task.
Leave the task unaffected otherwise.
This does not use the tasks deferred instance.
The only requirement is that the task exist in task handler.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>task_id</strong> (<em>int</em>) an existing task ID.</p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><em>bool or any</em> Set to <strong>False</strong> if the task does not exist in task
handler. Otherwise it will be the return of the tasks callback.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.taskhandler.TaskHandler.do_task">
<span class="sig-name descname"><span class="pre">do_task</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">task_id</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/taskhandler.html#TaskHandler.do_task"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandler.do_task" title="Link to this definition"></a></dt>
<dd><p>Execute the task (call its callback).
If calling before timedelay cancel the deferred instance affliated to this task.
Remove the task from the dictionary of current tasks on a successful
callback.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>task_id</strong> (<em>int</em>) a valid task ID.</p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><em>bool or any</em> Set to <strong>False</strong> if the task does not exist in task
handler. Otherwise it will be the return of the tasks callback.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.taskhandler.TaskHandler.get_deferred">
<span class="sig-name descname"><span class="pre">get_deferred</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">task_id</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/taskhandler.html#TaskHandler.get_deferred"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandler.get_deferred" title="Link to this definition"></a></dt>
<dd><p>Return the instance of the deferred the task id is using.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>task_id</strong> (<em>int</em>) a valid task ID.</p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><p><em>bool or deferred</em> </p>
<dl class="simple">
<dt>An instance of a deferred or False if there is no task with the id.</dt><dd><p>None is returned if there is no deferred affiliated with this id.</p>
</dd>
</dl>
</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.taskhandler.TaskHandler.create_delays">
<span class="sig-name descname"><span class="pre">create_delays</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/taskhandler.html#TaskHandler.create_delays"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandler.create_delays" title="Link to this definition"></a></dt>
<dd><p>Create the delayed tasks for the persistent tasks.
This method should be automatically called when Evennia starts.</p>
</dd></dl>
</dd></dl>
</section>
<div class="clearer"></div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="Main">
<div class="sphinxsidebarwrapper">
<p class="logo"><a href="../index.html">
<img class="logo" src="../_static/evennia_logo.png" alt="Logo of Evennia"/>
</a></p>
<search id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="../search.html" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
<input type="submit" value="Go" />
</form>
</div>
</search>
<script>document.getElementById('searchbox').style.display = "block"</script>
<h3><a href="../index.html">Table of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#">evennia.scripts.taskhandler</a><ul>
<li><a class="reference internal" href="#evennia.scripts.taskhandler.handle_error"><code class="docutils literal notranslate"><span class="pre">handle_error()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.taskhandler.TaskHandlerTask"><code class="docutils literal notranslate"><span class="pre">TaskHandlerTask</span></code></a><ul>
<li><a class="reference internal" href="#evennia.scripts.taskhandler.TaskHandlerTask.pause"><code class="docutils literal notranslate"><span class="pre">TaskHandlerTask.pause()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.taskhandler.TaskHandlerTask.unpause"><code class="docutils literal notranslate"><span class="pre">TaskHandlerTask.unpause()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.taskhandler.TaskHandlerTask.do_task"><code class="docutils literal notranslate"><span class="pre">TaskHandlerTask.do_task()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.taskhandler.TaskHandlerTask.call"><code class="docutils literal notranslate"><span class="pre">TaskHandlerTask.call()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.taskhandler.TaskHandlerTask.remove"><code class="docutils literal notranslate"><span class="pre">TaskHandlerTask.remove()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.taskhandler.TaskHandlerTask.cancel"><code class="docutils literal notranslate"><span class="pre">TaskHandlerTask.cancel()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.taskhandler.TaskHandlerTask.active"><code class="docutils literal notranslate"><span class="pre">TaskHandlerTask.active()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.taskhandler.TaskHandlerTask.exists"><code class="docutils literal notranslate"><span class="pre">TaskHandlerTask.exists()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.taskhandler.TaskHandlerTask.get_id"><code class="docutils literal notranslate"><span class="pre">TaskHandlerTask.get_id()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.taskhandler.TaskHandlerTask.__init__"><code class="docutils literal notranslate"><span class="pre">TaskHandlerTask.__init__()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.taskhandler.TaskHandlerTask.get_deferred"><code class="docutils literal notranslate"><span class="pre">TaskHandlerTask.get_deferred()</span></code></a></li>
<li><a class="reference internal" href="#id0"><code class="docutils literal notranslate"><span class="pre">TaskHandlerTask.pause()</span></code></a></li>
<li><a class="reference internal" href="#id1"><code class="docutils literal notranslate"><span class="pre">TaskHandlerTask.unpause()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.taskhandler.TaskHandlerTask.paused"><code class="docutils literal notranslate"><span class="pre">TaskHandlerTask.paused</span></code></a></li>
<li><a class="reference internal" href="#id2"><code class="docutils literal notranslate"><span class="pre">TaskHandlerTask.do_task()</span></code></a></li>
<li><a class="reference internal" href="#id3"><code class="docutils literal notranslate"><span class="pre">TaskHandlerTask.call()</span></code></a></li>
<li><a class="reference internal" href="#id4"><code class="docutils literal notranslate"><span class="pre">TaskHandlerTask.remove()</span></code></a></li>
<li><a class="reference internal" href="#id5"><code class="docutils literal notranslate"><span class="pre">TaskHandlerTask.cancel()</span></code></a></li>
<li><a class="reference internal" href="#id6"><code class="docutils literal notranslate"><span class="pre">TaskHandlerTask.active()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.taskhandler.TaskHandlerTask.called"><code class="docutils literal notranslate"><span class="pre">TaskHandlerTask.called</span></code></a></li>
<li><a class="reference internal" href="#id7"><code class="docutils literal notranslate"><span class="pre">TaskHandlerTask.exists()</span></code></a></li>
<li><a class="reference internal" href="#id8"><code class="docutils literal notranslate"><span class="pre">TaskHandlerTask.get_id()</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#evennia.scripts.taskhandler.TaskHandler"><code class="docutils literal notranslate"><span class="pre">TaskHandler</span></code></a><ul>
<li><a class="reference internal" href="#evennia.scripts.taskhandler.TaskHandler.__init__"><code class="docutils literal notranslate"><span class="pre">TaskHandler.__init__()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.taskhandler.TaskHandler.load"><code class="docutils literal notranslate"><span class="pre">TaskHandler.load()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.taskhandler.TaskHandler.clean_stale_tasks"><code class="docutils literal notranslate"><span class="pre">TaskHandler.clean_stale_tasks()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.taskhandler.TaskHandler.save"><code class="docutils literal notranslate"><span class="pre">TaskHandler.save()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.taskhandler.TaskHandler.add"><code class="docutils literal notranslate"><span class="pre">TaskHandler.add()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.taskhandler.TaskHandler.exists"><code class="docutils literal notranslate"><span class="pre">TaskHandler.exists()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.taskhandler.TaskHandler.active"><code class="docutils literal notranslate"><span class="pre">TaskHandler.active()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.taskhandler.TaskHandler.cancel"><code class="docutils literal notranslate"><span class="pre">TaskHandler.cancel()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.taskhandler.TaskHandler.remove"><code class="docutils literal notranslate"><span class="pre">TaskHandler.remove()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.taskhandler.TaskHandler.clear"><code class="docutils literal notranslate"><span class="pre">TaskHandler.clear()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.taskhandler.TaskHandler.call_task"><code class="docutils literal notranslate"><span class="pre">TaskHandler.call_task()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.taskhandler.TaskHandler.do_task"><code class="docutils literal notranslate"><span class="pre">TaskHandler.do_task()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.taskhandler.TaskHandler.get_deferred"><code class="docutils literal notranslate"><span class="pre">TaskHandler.get_deferred()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.taskhandler.TaskHandler.create_delays"><code class="docutils literal notranslate"><span class="pre">TaskHandler.create_delays()</span></code></a></li>
</ul>
</li>
</ul>
</li>
</ul>
<div>
<h4>Previous topic</h4>
<p class="topless"><a href="evennia.scripts.scripts.html"
title="previous chapter">evennia.scripts.scripts</a></p>
</div>
<div>
<h4>Next topic</h4>
<p class="topless"><a href="evennia.scripts.tickerhandler.html"
title="next chapter">evennia.scripts.tickerhandler</a></p>
</div>
<div role="note" aria-label="source link">
<!--h3>This Page</h3-->
<ul class="this-page-menu">
<li><a href="../_sources/api/evennia.scripts.taskhandler.md.txt"
rel="nofollow">Show Page Source</a></li>
</ul>
</div><h3>Links</h3>
<ul>
<li><a href="https://www.evennia.com/docs/latest/index.html">Documentation Top</a> </li>
<li><a href="https://www.evennia.com">Evennia Home</a> </li>
<li><a href="https://github.com/evennia/evennia">Github</a> </li>
<li><a href="http://games.evennia.com">Game Index</a> </li>
<li>
<a href="https://discord.gg/AJJpcRUhtF">Discord</a> -
<a href="https://github.com/evennia/evennia/discussions">Discussions</a> -
<a href="https://evennia.blogspot.com/">Blog</a>
</li>
</ul>
<h3>Doc Versions</h3>
<ul>
<li>
<a href="https://www.evennia.com/docs/latest/index.html">latest (main branch)</a>
</li>
<li>
<a href="https://www.evennia.com/docs/5.x/index.html">v5.0.0 branch (outdated)</a>
</li>
<li>
<a href="https://www.evennia.com/docs/4.x/index.html">v4.0.0 branch (outdated)</a>
</li>
<li>
<a href="https://www.evennia.com/docs/3.x/index.html">v3.0.0 branch (outdated)</a>
</li>
<li>
<a href="https://www.evennia.com/docs/2.x/index.html">v2.0.0 branch (outdated)</a>
</li>
<li>
<a href="https://www.evennia.com/docs/1.x/index.html">v1.0.0 branch (outdated)</a>
</li>
<li>
<a href="https://www.evennia.com/docs/0.x/index.html">v0.9.5 branch (outdated)</a>
</li>
</ul>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related" role="navigation" aria-label="Related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="evennia.scripts.tickerhandler.html" title="evennia.scripts.tickerhandler"
>next</a> |</li>
<li class="right" >
<a href="evennia.scripts.scripts.html" title="evennia.scripts.scripts"
>previous</a> |</li>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="../Evennia-API.html" >API Summary</a> &#187;</li>
<li class="nav-item nav-item-2"><a href="evennia-api.html" >evennia</a> &#187;</li>
<li class="nav-item nav-item-3"><a href="evennia.html" >evennia</a> &#187;</li>
<li class="nav-item nav-item-4"><a href="evennia.scripts.html" >evennia.scripts</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">evennia.scripts.taskhandler</a></li>
</ul>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2024, The Evennia developer community.
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.2.3.
</div>
</body>
</html>