evennia/docs/3.x/api/evennia.scripts.taskhandler.html
2023-12-20 23:10:55 +01:00

628 lines
No EOL
38 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>evennia.scripts.taskhandler &#8212; Evennia latest documentation</title>
<link rel="stylesheet" href="../_static/nature.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<script id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/language_data.js"></script>
<link rel="shortcut 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="admonition important">
<p class="first admonition-title">Note</p>
<p class="last">You are reading an old version of the Evennia documentation. <a href="https://www.evennia.com/docs/latest/index.html">The latest version is here</a></p>.
</div>
<div class="related" role="navigation" aria-label="related navigation">
<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 latest</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="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<p class="logo"><a href="../index.html">
<img class="logo" src="../_static/evennia_logo.png" alt="Logo"/>
</a></p>
<div 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" />
<input type="submit" value="Go" />
</form>
</div>
</div>
<script>$('#searchbox').show(0);</script>
<h4>Previous topic</h4>
<p class="topless"><a href="evennia.scripts.scripts.html"
title="previous chapter">evennia.scripts.scripts</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="evennia.scripts.tickerhandler.html"
title="next chapter">evennia.scripts.tickerhandler</a></p>
<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>
</div>
</div>
<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="Permalink to this headline"></a></h1>
<p>Module containing the task handler for Evennia deferred tasks, persistent or not.</p>
<dl class="py function">
<dt id="evennia.scripts.taskhandler.handle_error">
<code class="sig-prename descclassname">evennia.scripts.taskhandler.</code><code class="sig-name descname">handle_error</code><span class="sig-paren">(</span><em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/taskhandler.html#handle_error"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.scripts.taskhandler.handle_error" title="Permalink to this definition"></a></dt>
<dd><p>Handle errors within deferred objects.</p>
</dd></dl>
<dl class="py class">
<dt id="evennia.scripts.taskhandler.TaskHandlerTask">
<em class="property">class </em><code class="sig-prename descclassname">evennia.scripts.taskhandler.</code><code class="sig-name descname">TaskHandlerTask</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">task_id</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/taskhandler.html#TaskHandlerTask"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandlerTask" title="Permalink 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 id="evennia.scripts.taskhandler.TaskHandlerTask.pause">
<code class="sig-name descname">pause</code><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">[source]</span></a><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandlerTask.pause" title="Permalink to this definition"></a></dt>
<dd><p>Pause the callback of a task.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.scripts.taskhandler.TaskHandlerTask.unpause">
<code class="sig-name descname">unpause</code><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">[source]</span></a><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandlerTask.unpause" title="Permalink to this definition"></a></dt>
<dd><p>Process all callbacks made since pause() was called.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.scripts.taskhandler.TaskHandlerTask.do_task">
<code class="sig-name descname">do_task</code><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">[source]</span></a><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandlerTask.do_task" title="Permalink to this definition"></a></dt>
<dd><p>Execute the task (call its callback).</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.scripts.taskhandler.TaskHandlerTask.call">
<code class="sig-name descname">call</code><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">[source]</span></a><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandlerTask.call" title="Permalink to this definition"></a></dt>
<dd><p>Call the callback of this task.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.scripts.taskhandler.TaskHandlerTask.remove">
<code class="sig-name descname">remove</code><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">[source]</span></a><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandlerTask.remove" title="Permalink to this definition"></a></dt>
<dd><p>Remove a task without executing it.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.scripts.taskhandler.TaskHandlerTask.cancel">
<code class="sig-name descname">cancel</code><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">[source]</span></a><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandlerTask.cancel" title="Permalink to this definition"></a></dt>
<dd><p>Stop a task from automatically executing.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.scripts.taskhandler.TaskHandlerTask.active">
<code class="sig-name descname">active</code><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">[source]</span></a><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandlerTask.active" title="Permalink 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 id="evennia.scripts.taskhandler.TaskHandlerTask.exists">
<code class="sig-name descname">exists</code><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">[source]</span></a><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandlerTask.exists" title="Permalink to this definition"></a></dt>
<dd><p>Check if a task exists.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.scripts.taskhandler.TaskHandlerTask.get_id">
<code class="sig-name descname">get_id</code><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">[source]</span></a><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandlerTask.get_id" title="Permalink 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 id="evennia.scripts.taskhandler.TaskHandlerTask.__init__">
<code class="sig-name descname">__init__</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">task_id</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/taskhandler.html#TaskHandlerTask.__init__"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandlerTask.__init__" title="Permalink to this definition"></a></dt>
<dd><p>Initialize self. See help(type(self)) for accurate signature.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.scripts.taskhandler.TaskHandlerTask.get_deferred">
<code class="sig-name descname">get_deferred</code><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">[source]</span></a><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandlerTask.get_deferred" title="Permalink 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</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 id="id0">
<code class="sig-name descname">pause</code><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">[source]</span></a><a class="headerlink" href="#id0" title="Permalink 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 id="id1">
<code class="sig-name descname">unpause</code><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">[source]</span></a><a class="headerlink" href="#id1" title="Permalink 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 method">
<dt id="evennia.scripts.taskhandler.TaskHandlerTask.paused">
<em class="property">property </em><code class="sig-name descname">paused</code><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandlerTask.paused" title="Permalink 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</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 id="id2">
<code class="sig-name descname">do_task</code><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">[source]</span></a><a class="headerlink" href="#id2" title="Permalink 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</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 id="id3">
<code class="sig-name descname">call</code><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">[source]</span></a><a class="headerlink" href="#id3" title="Permalink 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</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 id="id4">
<code class="sig-name descname">remove</code><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">[source]</span></a><a class="headerlink" href="#id4" title="Permalink 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</dt>
<dd class="field-odd"><p><strong>task_id</strong> (<em>int</em>) an existing task ID.</p>
</dd>
<dt class="field-even">Returns</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 id="id5">
<code class="sig-name descname">cancel</code><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">[source]</span></a><a class="headerlink" href="#id5" title="Permalink 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</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 id="id6">
<code class="sig-name descname">active</code><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">[source]</span></a><a class="headerlink" href="#id6" title="Permalink 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</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 method">
<dt id="evennia.scripts.taskhandler.TaskHandlerTask.called">
<em class="property">property </em><code class="sig-name descname">called</code><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandlerTask.called" title="Permalink 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</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 id="id7">
<code class="sig-name descname">exists</code><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">[source]</span></a><a class="headerlink" href="#id7" title="Permalink 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</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 id="id8">
<code class="sig-name descname">get_id</code><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">[source]</span></a><a class="headerlink" href="#id8" title="Permalink 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</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 id="evennia.scripts.taskhandler.TaskHandler">
<em class="property">class </em><code class="sig-prename descclassname">evennia.scripts.taskhandler.</code><code class="sig-name descname">TaskHandler</code><a class="reference internal" href="../_modules/evennia/scripts/taskhandler.html#TaskHandler"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandler" title="Permalink 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 id="evennia.scripts.taskhandler.TaskHandler.__init__">
<code class="sig-name descname">__init__</code><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">[source]</span></a><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandler.__init__" title="Permalink to this definition"></a></dt>
<dd><p>Initialize self. See help(type(self)) for accurate signature.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.scripts.taskhandler.TaskHandler.load">
<code class="sig-name descname">load</code><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">[source]</span></a><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandler.load" title="Permalink 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 id="evennia.scripts.taskhandler.TaskHandler.clean_stale_tasks">
<code class="sig-name descname">clean_stale_tasks</code><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">[source]</span></a><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandler.clean_stale_tasks" title="Permalink 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 id="evennia.scripts.taskhandler.TaskHandler.save">
<code class="sig-name descname">save</code><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">[source]</span></a><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandler.save" title="Permalink to this definition"></a></dt>
<dd><p>Save the tasks in ServerConfig.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.scripts.taskhandler.TaskHandler.add">
<code class="sig-name descname">add</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">timedelay</span></em>, <em class="sig-param"><span class="n">callback</span></em>, <em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/taskhandler.html#TaskHandler.add"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandler.add" title="Permalink 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</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</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 id="evennia.scripts.taskhandler.TaskHandler.exists">
<code class="sig-name descname">exists</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">task_id</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/taskhandler.html#TaskHandler.exists"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandler.exists" title="Permalink 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</dt>
<dd class="field-odd"><p><strong>task_id</strong> (<em>int</em>) an existing task ID.</p>
</dd>
<dt class="field-even">Returns</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 id="evennia.scripts.taskhandler.TaskHandler.active">
<code class="sig-name descname">active</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">task_id</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/taskhandler.html#TaskHandler.active"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandler.active" title="Permalink 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</dt>
<dd class="field-odd"><p><strong>task_id</strong> (<em>int</em>) an existing task ID.</p>
</dd>
<dt class="field-even">Returns</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 id="evennia.scripts.taskhandler.TaskHandler.cancel">
<code class="sig-name descname">cancel</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">task_id</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/taskhandler.html#TaskHandler.cancel"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandler.cancel" title="Permalink 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</dt>
<dd class="field-odd"><p><strong>task_id</strong> (<em>int</em>) an existing task ID.</p>
</dd>
<dt class="field-even">Returns</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 id="evennia.scripts.taskhandler.TaskHandler.remove">
<code class="sig-name descname">remove</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">task_id</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/taskhandler.html#TaskHandler.remove"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandler.remove" title="Permalink 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</dt>
<dd class="field-odd"><p><strong>task_id</strong> (<em>int</em>) an existing task ID.</p>
</dd>
<dt class="field-even">Returns</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 id="evennia.scripts.taskhandler.TaskHandler.clear">
<code class="sig-name descname">clear</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">save</span><span class="o">=</span><span class="default_value">True</span></em>, <em class="sig-param"><span class="n">cancel</span><span class="o">=</span><span class="default_value">True</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/taskhandler.html#TaskHandler.clear"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandler.clear" title="Permalink 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</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</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 id="evennia.scripts.taskhandler.TaskHandler.call_task">
<code class="sig-name descname">call_task</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">task_id</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/taskhandler.html#TaskHandler.call_task"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandler.call_task" title="Permalink 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</dt>
<dd class="field-odd"><p><strong>task_id</strong> (<em>int</em>) an existing task ID.</p>
</dd>
<dt class="field-even">Returns</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 id="evennia.scripts.taskhandler.TaskHandler.do_task">
<code class="sig-name descname">do_task</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">task_id</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/taskhandler.html#TaskHandler.do_task"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandler.do_task" title="Permalink 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</dt>
<dd class="field-odd"><p><strong>task_id</strong> (<em>int</em>) a valid task ID.</p>
</dd>
<dt class="field-even">Returns</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 id="evennia.scripts.taskhandler.TaskHandler.get_deferred">
<code class="sig-name descname">get_deferred</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">task_id</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/taskhandler.html#TaskHandler.get_deferred"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandler.get_deferred" title="Permalink 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</dt>
<dd class="field-odd"><p><strong>task_id</strong> (<em>int</em>) a valid task ID.</p>
</dd>
<dt class="field-even">Returns</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 id="evennia.scripts.taskhandler.TaskHandler.create_delays">
<code class="sig-name descname">create_delays</code><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">[source]</span></a><a class="headerlink" href="#evennia.scripts.taskhandler.TaskHandler.create_delays" title="Permalink 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>
</div>
</div>
</div>
<div class="related" role="navigation" aria-label="related navigation">
<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 latest</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="admonition important">
<p class="first admonition-title">Note</p>
<p class="last">You are reading an old version of the Evennia documentation. <a href="https://www.evennia.com/docs/latest/index.html">The latest version is here</a></p>.
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2023, The Evennia developer community.
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.2.1.
</div>
</body>
</html>