<pclass="last">You are reading an old version of the Evennia documentation. <ahref="https://www.evennia.com/docs/latest/index.html">The latest version is here</a></p>.
<spanid="evennia-scripts-tickerhandler"></span><h1>evennia.scripts.tickerhandler<aclass="headerlink"href="#module-evennia.scripts.tickerhandler"title="Permalink to this headline">¶</a></h1>
<p>TickerHandler</p>
<p>This implements an efficient Ticker which uses a subscription
model to ‘tick’ subscribed objects at regular intervals.</p>
<p>The ticker mechanism is used by importing and accessing
the instantiated TICKER_HANDLER instance in this module. This
instance is run by the server; it will save its status across
server reloads and be started automaticall on boot.</p>
<p>If one wants to duplicate TICKER_HANDLER’s auto-saving feature in
a custom handler one can make a custom <strong>AT_STARTSTOP_MODULE</strong> entry to
call the handler’s <strong>save()</strong> and <strong>restore()</strong> methods when the server reboots.</p>
<dlclass="py class">
<dtid="evennia.scripts.tickerhandler.Ticker">
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.scripts.tickerhandler.</code><codeclass="sig-name descname">Ticker</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">interval</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/tickerhandler.html#Ticker"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.tickerhandler.Ticker"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">__init__</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">interval</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/tickerhandler.html#Ticker.__init__"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.tickerhandler.Ticker.__init__"title="Permalink to this definition">¶</a></dt>
<dd><p>Set up the ticker</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>interval</strong> (<em>int</em>) – The stepping interval.</p>
<codeclass="sig-name descname">validate</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">start_delay</span><spanclass="o">=</span><spanclass="default_value">None</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/tickerhandler.html#Ticker.validate"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.tickerhandler.Ticker.validate"title="Permalink to this definition">¶</a></dt>
<dd><p>Start/stop the task depending on how many subscribers we have
using it.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>start_delay</strong> (<em>int</em><em>, </em><em>optional</em>) – Time to way before starting.</p>
</dd>
</dl>
</dd></dl>
<dlclass="py method">
<dtid="evennia.scripts.tickerhandler.Ticker.add">
<codeclass="sig-name descname">add</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">store_key</span></em>, <emclass="sig-param"><spanclass="o">*</span><spanclass="n">args</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/tickerhandler.html#Ticker.add"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.tickerhandler.Ticker.add"title="Permalink to this definition">¶</a></dt>
<dd><p>Sign up a subscriber to this ticker.
:param store_key: Unique storage hash for this ticker subscription.
:type store_key: str
:param args: Arguments to call the hook method with.
:type args: any, optional</p>
<dlclass="field-list simple">
<dtclass="field-odd">Keyword Arguments</dt>
<ddclass="field-odd"><p><strong>_start_delay</strong> (<em>int</em>) – If set, this will be
<codeclass="sig-name descname">remove</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">store_key</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/tickerhandler.html#Ticker.remove"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.tickerhandler.Ticker.remove"title="Permalink to this definition">¶</a></dt>
<dd><p>Unsubscribe object from this ticker</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>store_key</strong> (<em>str</em>) – Unique store key.</p>
<codeclass="sig-name descname">stop</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/tickerhandler.html#Ticker.stop"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.tickerhandler.Ticker.stop"title="Permalink to this definition">¶</a></dt>
<dd><p>Kill the Task, regardless of subscriptions.</p>
</dd></dl>
</dd></dl>
<dlclass="py class">
<dtid="evennia.scripts.tickerhandler.TickerPool">
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.scripts.tickerhandler.</code><codeclass="sig-name descname">TickerPool</code><aclass="reference internal"href="../_modules/evennia/scripts/tickerhandler.html#TickerPool"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.tickerhandler.TickerPool"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">ticker_class</code><aclass="headerlink"href="#evennia.scripts.tickerhandler.TickerPool.ticker_class"title="Permalink to this definition">¶</a></dt>
<dd><p>alias of <aclass="reference internal"href="#evennia.scripts.tickerhandler.Ticker"title="evennia.scripts.tickerhandler.Ticker"><codeclass="xref py py-class docutils literal notranslate"><spanclass="pre">Ticker</span></code></a></p>
<codeclass="sig-name descname">__init__</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/tickerhandler.html#TickerPool.__init__"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.tickerhandler.TickerPool.__init__"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">add</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">store_key</span></em>, <emclass="sig-param"><spanclass="o">*</span><spanclass="n">args</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/tickerhandler.html#TickerPool.add"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.tickerhandler.TickerPool.add"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">remove</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">store_key</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/tickerhandler.html#TickerPool.remove"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.tickerhandler.TickerPool.remove"title="Permalink to this definition">¶</a></dt>
<dd><p>Remove subscription from pool.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>store_key</strong> (<em>str</em>) – Unique storage hash to remove</p>
<codeclass="sig-name descname">stop</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">interval</span><spanclass="o">=</span><spanclass="default_value">None</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/tickerhandler.html#TickerPool.stop"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.tickerhandler.TickerPool.stop"title="Permalink to this definition">¶</a></dt>
<dd><p>Stop all scripts in pool. This is done at server reload since
restoring the pool will automatically re-populate the pool.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>interval</strong> (<em>int</em><em>, </em><em>optional</em>) – Only stop tickers with this interval.</p>
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.scripts.tickerhandler.</code><codeclass="sig-name descname">TickerHandler</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">save_name</span><spanclass="o">=</span><spanclass="default_value">'ticker_storage'</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/tickerhandler.html#TickerHandler"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.tickerhandler.TickerHandler"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">ticker_pool_class</code><aclass="headerlink"href="#evennia.scripts.tickerhandler.TickerHandler.ticker_pool_class"title="Permalink to this definition">¶</a></dt>
<dd><p>alias of <aclass="reference internal"href="#evennia.scripts.tickerhandler.TickerPool"title="evennia.scripts.tickerhandler.TickerPool"><codeclass="xref py py-class docutils literal notranslate"><spanclass="pre">TickerPool</span></code></a></p>
<codeclass="sig-name descname">__init__</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">save_name</span><spanclass="o">=</span><spanclass="default_value">'ticker_storage'</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/tickerhandler.html#TickerHandler.__init__"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.tickerhandler.TickerHandler.__init__"title="Permalink to this definition">¶</a></dt>
<dd><p>Initialize handler</p>
<dlclass="simple">
<dt>save_name (str, optional): The name of the ServerConfig</dt><dd><p>instance to store the handler state persistently.</p>
<codeclass="sig-name descname">save</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/tickerhandler.html#TickerHandler.save"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.tickerhandler.TickerHandler.save"title="Permalink to this definition">¶</a></dt>
<dd><p>Save ticker_storage as a serialized string into a temporary
ServerConf field. Whereas saving is done on the fly, if called
by server when it shuts down, the current timer of each ticker
will be saved so it can start over from that point.</p>
<codeclass="sig-name descname">restore</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">server_reload</span><spanclass="o">=</span><spanclass="default_value">True</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/tickerhandler.html#TickerHandler.restore"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.tickerhandler.TickerHandler.restore"title="Permalink to this definition">¶</a></dt>
<dd><p>Restore ticker_storage from database and re-initialize the
handler from storage. This is triggered by the server at
restart.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>server_reload</strong> (<em>bool</em><em>, </em><em>optional</em>) – If this is False, it means
<codeclass="sig-name descname">remove</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">interval</span><spanclass="o">=</span><spanclass="default_value">60</span></em>, <emclass="sig-param"><spanclass="n">callback</span><spanclass="o">=</span><spanclass="default_value">None</span></em>, <emclass="sig-param"><spanclass="n">idstring</span><spanclass="o">=</span><spanclass="default_value">''</span></em>, <emclass="sig-param"><spanclass="n">persistent</span><spanclass="o">=</span><spanclass="default_value">True</span></em>, <emclass="sig-param"><spanclass="n">store_key</span><spanclass="o">=</span><spanclass="default_value">None</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/tickerhandler.html#TickerHandler.remove"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.tickerhandler.TickerHandler.remove"title="Permalink to this definition">¶</a></dt>
<dd><p>Remove ticker subscription from handler.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Keyword Arguments</dt>
<ddclass="field-odd"><ulclass="simple">
<li><p><strong>interval</strong> (<em>int</em>) – Interval of ticker to remove.</p></li>
<li><p><strong>callback</strong> (<em>callable function</em><em> or </em><em>method</em>) – Either a function or
the method of a typeclassed object.</p></li>
<li><p><strong>idstring</strong> (<em>str</em>) – Identifier id of ticker to remove.</p></li>
<li><p><strong>persistent</strong> (<em>bool</em>) – Whether this ticker is persistent or not.</p></li>
<li><p><strong>store_key</strong> (<em>str</em>) – If given, all other kwargs are ignored and only
this is used to identify the ticker.</p></li>
</ul>
</dd>
<dtclass="field-even">Raises</dt>
<ddclass="field-even"><p><strong>KeyError</strong>– If no matching ticker was found to remove.</p>
</dd>
</dl>
<pclass="rubric">Notes</p>
<p>The store-key is normally built from the interval/callback/idstring/persistent values;
but if the <strong>store_key</strong> is explicitly given, this is used instead.</p>
<codeclass="sig-name descname">clear</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">interval</span><spanclass="o">=</span><spanclass="default_value">None</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/tickerhandler.html#TickerHandler.clear"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.tickerhandler.TickerHandler.clear"title="Permalink to this definition">¶</a></dt>
<dd><p>Stop/remove tickers from handler.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>interval</strong> (<em>int</em><em>, </em><em>optional</em>) – Only stop tickers with this interval.</p>
</dd>
</dl>
<pclass="rubric">Notes</p>
<p>This is the only supported way to kill tickers related to
<codeclass="sig-name descname">all</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">interval</span><spanclass="o">=</span><spanclass="default_value">None</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/tickerhandler.html#TickerHandler.all"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.tickerhandler.TickerHandler.all"title="Permalink to this definition">¶</a></dt>
<dd><p>Get all ticker subscriptions.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>interval</strong> (<em>int</em><em>, </em><em>optional</em>) – Limit match to tickers with this interval.</p>
</dd>
<dtclass="field-even">Returns</dt>
<ddclass="field-even"><p><em>list or dict</em>– If <strong>interval</strong> was given, this is a list of tickers using that interval.
If <strong>interval</strong> was <em>not</em> given, this is a dict
<codeclass="sig-name descname">all_display</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/tickerhandler.html#TickerHandler.all_display"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.tickerhandler.TickerHandler.all_display"title="Permalink to this definition">¶</a></dt>
<dd><p>Get all tickers on an easily displayable form.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Returns</dt>
<ddclass="field-odd"><p><em>tickers (dict)</em>– A list of all storekeys</p>
<pclass="last">You are reading an old version of the Evennia documentation. <ahref="https://www.evennia.com/docs/latest/index.html">The latest version is here</a></p>.
</div>
<divclass="footer"role="contentinfo">
© Copyright 2023, The Evennia developer community.
Created using <ahref="https://www.sphinx-doc.org/">Sphinx</a> 3.2.1.