task/_docs_/task.html
2025-08-17 11:18:48 +02:00

846 lines
74 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 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>task package &#8212; task documentation</title><meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=b86133f3" />
<link rel="stylesheet" type="text/css" href="_static/classic.css?v=67a6116b" />
<link rel="stylesheet" type="text/css" href="_static/pydoctheme.css?v=5ff89526" />
<link id="pygments_dark_css" media="(prefers-color-scheme: dark)" rel="stylesheet" type="text/css" href="_static/pygments_dark.css?v=5349f25f" />
<script src="_static/documentation_options.js?v=5929fcd5"></script>
<script src="_static/doctools.js?v=9bcbadda"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" /><link rel="stylesheet" href="_static/pydoctheme_dark.css" media="(prefers-color-scheme: dark)" id="pydoctheme_dark_css">
<link rel="shortcut icon" type="image/png" href="_static/py.svg">
<script type="text/javascript" src="_static/copybutton.js"></script>
<script type="text/javascript" src="_static/menu.js"></script>
<script type="text/javascript" src="_static/search-focus.js"></script>
<script type="text/javascript" src="_static/themetoggle.js"></script>
</head>
<body>
<div class="mobile-nav">
<input type="checkbox" id="menuToggler" class="toggler__input" aria-controls="navigation"
aria-pressed="false" aria-expanded="false" role="button" aria-label="Menu">
<nav class="nav-content" role="navigation">
<label for="menuToggler" class="toggler__label">
<span></span>
</label>
<span class="nav-items-wrapper">
<a href="https://www.python.org/" class="nav-logo">
<img src="_static/py.svg" alt="Python logo">
</a>
<span class="version_switcher_placeholder"></span>
<form role="search" class="search" action="search.html" method="get">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" class="search-icon">
<path fill-rule="nonzero" fill="currentColor" d="M15.5 14h-.79l-.28-.27a6.5 6.5 0 001.48-5.34c-.47-2.78-2.79-5-5.59-5.34a6.505 6.505 0 00-7.27 7.27c.34 2.8 2.56 5.12 5.34 5.59a6.5 6.5 0 005.34-1.48l.27.28v.79l4.25 4.25c.41.41 1.08.41 1.49 0 .41-.41.41-1.08 0-1.49L15.5 14zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"></path>
</svg>
<input placeholder="Quick search" aria-label="Quick search" type="search" name="q">
<input type="submit" value="Go">
</form>
</span>
</nav>
<div class="menu-wrapper">
<nav class="menu" role="navigation" aria-label="main navigation">
<div class="language_switcher_placeholder"></div>
<label class="theme-selector-label">
Theme
<select class="theme-selector" oninput="activateTheme(this.value)">
<option value="auto" selected>Auto</option>
<option value="light">Light</option>
<option value="dark">Dark</option>
</select>
</label>
<div>
<h3><a href="#">Table of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#">task package</a><ul>
<li><a class="reference internal" href="#task-task-module">task (Task Module)</a></li>
<li><a class="reference internal" href="#task.crontab"><code class="docutils literal notranslate"><span class="pre">crontab</span></code></a><ul>
<li><a class="reference internal" href="#task.crontab.ANY"><code class="docutils literal notranslate"><span class="pre">crontab.ANY</span></code></a></li>
<li><a class="reference internal" href="#task.crontab.add_cronjob"><code class="docutils literal notranslate"><span class="pre">crontab.add_cronjob()</span></code></a></li>
<li><a class="reference internal" href="#task.crontab.cronjob"><code class="docutils literal notranslate"><span class="pre">crontab.cronjob</span></code></a><ul>
<li><a class="reference internal" href="#task.crontab.cronjob.all_match"><code class="docutils literal notranslate"><span class="pre">crontab.cronjob.all_match</span></code></a></li>
<li><a class="reference internal" href="#task.crontab.cronjob.cron_execution"><code class="docutils literal notranslate"><span class="pre">crontab.cronjob.cron_execution()</span></code></a></li>
<li><a class="reference internal" href="#task.crontab.cronjob.set_trigger_conditions"><code class="docutils literal notranslate"><span class="pre">crontab.cronjob.set_trigger_conditions()</span></code></a></li>
</ul>
</li>
</ul>
</li>
<li><a class="reference internal" href="#task.delayed"><code class="docutils literal notranslate"><span class="pre">delayed</span></code></a><ul>
<li><a class="reference internal" href="#task.delayed.run"><code class="docutils literal notranslate"><span class="pre">delayed.run()</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#task.periodic"><code class="docutils literal notranslate"><span class="pre">periodic</span></code></a><ul>
<li><a class="reference internal" href="#task.periodic.join"><code class="docutils literal notranslate"><span class="pre">periodic.join()</span></code></a></li>
<li><a class="reference internal" href="#task.periodic.run"><code class="docutils literal notranslate"><span class="pre">periodic.run()</span></code></a></li>
<li><a class="reference internal" href="#task.periodic.stop"><code class="docutils literal notranslate"><span class="pre">periodic.stop()</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#task.queue"><code class="docutils literal notranslate"><span class="pre">queue</span></code></a><ul>
<li><a class="reference internal" href="#task.queue.clean_queue"><code class="docutils literal notranslate"><span class="pre">queue.clean_queue()</span></code></a></li>
<li><a class="reference internal" href="#task.queue.enqueue"><code class="docutils literal notranslate"><span class="pre">queue.enqueue()</span></code></a></li>
<li><a class="reference internal" href="#task.queue.expire"><code class="docutils literal notranslate"><span class="pre">queue.expire()</span></code></a></li>
<li><a class="reference internal" href="#task.queue.job"><code class="docutils literal notranslate"><span class="pre">queue.job</span></code></a><ul>
<li><a class="reference internal" href="#task.queue.job.run"><code class="docutils literal notranslate"><span class="pre">queue.job.run()</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#task.queue.qsize"><code class="docutils literal notranslate"><span class="pre">queue.qsize()</span></code></a></li>
<li><a class="reference internal" href="#task.queue.run"><code class="docutils literal notranslate"><span class="pre">queue.run()</span></code></a></li>
<li><a class="reference internal" href="#task.queue.stop"><code class="docutils literal notranslate"><span class="pre">queue.stop()</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#task.threaded_queue"><code class="docutils literal notranslate"><span class="pre">threaded_queue</span></code></a><ul>
<li><a class="reference internal" href="#task.threaded_queue.join"><code class="docutils literal notranslate"><span class="pre">threaded_queue.join()</span></code></a></li>
<li><a class="reference internal" href="#task.threaded_queue.run"><code class="docutils literal notranslate"><span class="pre">threaded_queue.run()</span></code></a></li>
<li><a class="reference internal" href="#task.threaded_queue.stop"><code class="docutils literal notranslate"><span class="pre">threaded_queue.stop()</span></code></a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div role="note" aria-label="source link">
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="_sources/task.rst.txt"
rel="nofollow">Show Source</a></li>
</ul>
</div>
<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>
</nav>
</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"
accesskey="I">index</a></li>
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li><img src="_static/py.svg" alt="Python logo" style="vertical-align: middle; margin-top: -1px"></li>
<li><a href="https://www.python.org/">Python</a> &#187;</li>
<li class="switchers">
<div class="language_switcher_placeholder"></div>
<div class="version_switcher_placeholder"></div>
</li>
<li>
<a href="index.html">task documentation</a> &#187;
</li>
<li class="nav-item nav-item-this"><a href="">task package</a></li>
<li class="right">
<div class="inline-search" role="search">
<form class="inline-search" action="search.html" method="get">
<input placeholder="Quick search" aria-label="Quick search" type="search" name="q" id="search-box">
<input type="submit" value="Go">
</form>
</div>
|
</li>
<li class="right">
<label class="theme-selector-label">
Theme
<select class="theme-selector" oninput="activateTheme(this.value)">
<option value="auto" selected>Auto</option>
<option value="light">Light</option>
<option value="dark">Dark</option>
</select>
</label> |</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<section id="module-task">
<span id="task-package"></span><h1>task package<a class="headerlink" href="#module-task" title="Link to this heading"></a></h1>
<section id="task-task-module">
<h2>task (Task Module)<a class="headerlink" href="#task-task-module" title="Link to this heading"></a></h2>
<p><strong>Author:</strong></p>
<ul class="simple">
<li><p>Dirk Alders &lt;<a class="reference external" href="mailto:sudo-dirk&#37;&#52;&#48;mount-mockery&#46;de">sudo-dirk<span>&#64;</span>mount-mockery<span>&#46;</span>de</a>&gt;</p></li>
</ul>
<p><strong>Description:</strong></p>
<blockquote>
<div><p>This Module supports helpfull classes for queues, tasks, …</p>
</div></blockquote>
<p><strong>Submodules:</strong></p>
<ul class="simple">
<li><p><a class="reference internal" href="#task.crontab" title="task.crontab"><code class="xref py py-class docutils literal notranslate"><span class="pre">task.crontab</span></code></a></p></li>
<li><p><a class="reference internal" href="#task.delayed" title="task.delayed"><code class="xref py py-class docutils literal notranslate"><span class="pre">task.delayed</span></code></a></p></li>
<li><p><a class="reference internal" href="#task.periodic" title="task.periodic"><code class="xref py py-class docutils literal notranslate"><span class="pre">task.periodic</span></code></a></p></li>
<li><p><a class="reference internal" href="#task.queue" title="task.queue"><code class="xref py py-class docutils literal notranslate"><span class="pre">task.queue</span></code></a></p></li>
<li><p><a class="reference internal" href="#task.threaded_queue" title="task.threaded_queue"><code class="xref py py-class docutils literal notranslate"><span class="pre">task.threaded_queue</span></code></a></p></li>
</ul>
<p><strong>Unittest:</strong></p>
<blockquote>
<div><p>See also the <a class="reference download internal" download="" href="_downloads/bb4c2a79217a913e45739a98cfffa1e0/unittest.pdf"><code class="xref download docutils literal notranslate"><span class="pre">unittest</span></code></a> documentation.</p>
</div></blockquote>
<p><strong>Module Documentation:</strong></p>
</section>
<dl class="py class">
<dt class="sig sig-object py" id="task.crontab">
<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">task.</span></span><span class="sig-name descname"><span class="pre">crontab</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">accuracy</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">30</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#task.crontab" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#task.periodic" title="task.periodic"><code class="xref py py-class docutils literal notranslate"><span class="pre">periodic</span></code></a></p>
<p>Class to execute a callback at the specified time conditions. See also parent <a class="reference internal" href="#task.periodic" title="task.periodic"><code class="xref py py-class docutils literal notranslate"><span class="pre">periodic</span></code></a>.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>accuracy</strong> (<em>float</em>) Repeat time in seconds for background task checking event triggering. This time is the maximum delay between specified time condition and the execution.</p>
</dd>
</dl>
<p><strong>Example:</strong></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="ch">#!/usr/bin/env python</span>
<span class="c1"># -*- coding: UTF-8 -*-</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">sys</span>
<span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">&#39;../..&#39;</span><span class="p">)</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">task</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">time</span>
<span class="k">def</span><span class="w"> </span><span class="nf">print_localtime</span><span class="p">(</span><span class="n">cj</span><span class="p">):</span>
<span class="nb">print</span><span class="p">(</span><span class="n">time</span><span class="o">.</span><span class="n">localtime</span><span class="p">())</span>
<span class="n">ct</span> <span class="o">=</span> <span class="n">task</span><span class="o">.</span><span class="n">crontab</span><span class="p">(</span><span class="n">accuracy</span><span class="o">=</span><span class="mi">7</span><span class="p">)</span>
<span class="n">minute</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">time</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">&#39;%M&#39;</span><span class="p">))</span>
<span class="n">ct</span><span class="o">.</span><span class="n">add_cronjob</span><span class="p">([</span><span class="n">minute</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">minute</span> <span class="o">+</span> <span class="mi">3</span><span class="p">],</span> <span class="n">task</span><span class="o">.</span><span class="n">crontab</span><span class="o">.</span><span class="n">ANY</span><span class="p">,</span> <span class="n">task</span><span class="o">.</span><span class="n">crontab</span><span class="o">.</span><span class="n">ANY</span><span class="p">,</span> <span class="n">task</span><span class="o">.</span><span class="n">crontab</span><span class="o">.</span><span class="n">ANY</span><span class="p">,</span> <span class="n">task</span><span class="o">.</span><span class="n">crontab</span><span class="o">.</span><span class="n">ANY</span><span class="p">,</span> <span class="n">print_localtime</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Cronjob added for Minute: </span><span class="si">%02d</span><span class="s1">, </span><span class="si">%02d</span><span class="se">\n</span><span class="s1">--------------------------------</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">minute</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">minute</span> <span class="o">+</span> <span class="mi">3</span><span class="p">))</span>
<span class="n">ct</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mi">195</span><span class="p">)</span>
<span class="n">ct</span><span class="o">.</span><span class="n">stop</span><span class="p">()</span>
<span class="n">ct</span><span class="o">.</span><span class="n">join</span><span class="p">()</span>
<span class="k">finally</span><span class="p">:</span>
<span class="n">ct</span><span class="o">.</span><span class="n">stop</span><span class="p">()</span>
</pre></div>
</div>
<p>Will result to the following output:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">Cronjob</span> <span class="n">added</span> <span class="k">for</span> <span class="n">Minute</span><span class="p">:</span> <span class="mi">03</span><span class="p">,</span> <span class="mi">05</span>
<span class="o">--------------------------------</span>
<span class="n">time</span><span class="o">.</span><span class="n">struct_time</span><span class="p">(</span><span class="n">tm_year</span><span class="o">=</span><span class="mi">2025</span><span class="p">,</span> <span class="n">tm_mon</span><span class="o">=</span><span class="mi">8</span><span class="p">,</span> <span class="n">tm_mday</span><span class="o">=</span><span class="mi">17</span><span class="p">,</span> <span class="n">tm_hour</span><span class="o">=</span><span class="mi">11</span><span class="p">,</span> <span class="n">tm_min</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">tm_sec</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">tm_wday</span><span class="o">=</span><span class="mi">6</span><span class="p">,</span> <span class="n">tm_yday</span><span class="o">=</span><span class="mi">229</span><span class="p">,</span> <span class="n">tm_isdst</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="n">time</span><span class="o">.</span><span class="n">struct_time</span><span class="p">(</span><span class="n">tm_year</span><span class="o">=</span><span class="mi">2025</span><span class="p">,</span> <span class="n">tm_mon</span><span class="o">=</span><span class="mi">8</span><span class="p">,</span> <span class="n">tm_mday</span><span class="o">=</span><span class="mi">17</span><span class="p">,</span> <span class="n">tm_hour</span><span class="o">=</span><span class="mi">11</span><span class="p">,</span> <span class="n">tm_min</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span> <span class="n">tm_sec</span><span class="o">=</span><span class="mi">6</span><span class="p">,</span> <span class="n">tm_wday</span><span class="o">=</span><span class="mi">6</span><span class="p">,</span> <span class="n">tm_yday</span><span class="o">=</span><span class="mi">229</span><span class="p">,</span> <span class="n">tm_isdst</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
</pre></div>
</div>
<dl class="py attribute">
<dt class="sig sig-object py" id="task.crontab.ANY">
<span class="sig-name descname"><span class="pre">ANY</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'*'</span></em><a class="headerlink" href="#task.crontab.ANY" title="Link to this definition"></a></dt>
<dd><p>Constant for matching every condition.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="task.crontab.add_cronjob">
<span class="sig-name descname"><span class="pre">add_cronjob</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">minute</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">hour</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">day_of_month</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">month</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">day_of_week</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="headerlink" href="#task.crontab.add_cronjob" title="Link to this definition"></a></dt>
<dd><p>This Method adds a cronjob to be executed.</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>minute</strong> (<em>int</em><em>, </em><em>list</em><em>, </em><em>str</em>) Minute for execution. Either 0…59, [0…59, 0…59, …] or <a class="reference internal" href="#task.crontab.ANY" title="task.crontab.ANY"><code class="xref py py-const docutils literal notranslate"><span class="pre">crontab.ANY</span></code></a> for every Minute.</p></li>
<li><p><strong>hour</strong> (<em>int</em><em>, </em><em>list</em><em>, </em><em>str</em>) Hour for execution. Either 0…23, [0…23, 0…23, …] or <a class="reference internal" href="#task.crontab.ANY" title="task.crontab.ANY"><code class="xref py py-const docutils literal notranslate"><span class="pre">crontab.ANY</span></code></a> for every Hour.</p></li>
<li><p><strong>day_of_month</strong> (<em>int</em><em>, </em><em>list</em><em>, </em><em>str</em>) Day of Month for execution. Either 0…31, [0…31, 0…31, …] or <a class="reference internal" href="#task.crontab.ANY" title="task.crontab.ANY"><code class="xref py py-const docutils literal notranslate"><span class="pre">crontab.ANY</span></code></a> for every Day of Month.</p></li>
<li><p><strong>month</strong> (<em>int</em><em>, </em><em>list</em><em>, </em><em>str</em>) Month for execution. Either 0…12, [0…12, 0…12, …] or <a class="reference internal" href="#task.crontab.ANY" title="task.crontab.ANY"><code class="xref py py-const docutils literal notranslate"><span class="pre">crontab.ANY</span></code></a> for every Month.</p></li>
<li><p><strong>day_of_week</strong> (<em>int</em><em>, </em><em>list</em><em>, </em><em>str</em>) Day of Week for execution. Either 0…6, [0…6, 0…6, …] or <a class="reference internal" href="#task.crontab.ANY" title="task.crontab.ANY"><code class="xref py py-const docutils literal notranslate"><span class="pre">crontab.ANY</span></code></a> for every Day of Week.</p></li>
<li><p><strong>callback</strong> (<em>func</em>) The callback to be executed. The instance of <a class="reference internal" href="#task.crontab.cronjob" title="task.crontab.cronjob"><code class="xref py py-class docutils literal notranslate"><span class="pre">cronjob</span></code></a> will be given as the first, args and kwargs as the following parameters.</p></li>
</ul>
</dd>
</dl>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>The <code class="docutils literal notranslate"><span class="pre">callback</span></code> will be executed with its instance of <a class="reference internal" href="#task.crontab.cronjob" title="task.crontab.cronjob"><code class="xref py py-class docutils literal notranslate"><span class="pre">cronjob</span></code></a> as the first parameter.
The given Arguments (<code class="xref py py-data docutils literal notranslate"><span class="pre">args</span></code>) and keyword Arguments (<code class="xref py py-data docutils literal notranslate"><span class="pre">kwargs</span></code>) will be stored in that object.</p>
</div>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="task.crontab.cronjob">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">cronjob</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">minute</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">hour</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">day_of_month</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">month</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">day_of_week</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="headerlink" href="#task.crontab.cronjob" 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>Class to handle cronjob parameters and cronjob changes.</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>minute</strong> (<em>int</em><em>, </em><em>list</em><em>, </em><em>str</em>) Minute for execution. Either 0…59, [0…59, 0…59, …] or <a class="reference internal" href="#task.crontab.ANY" title="task.crontab.ANY"><code class="xref py py-const docutils literal notranslate"><span class="pre">crontab.ANY</span></code></a> for every Minute.</p></li>
<li><p><strong>hour</strong> (<em>int</em><em>, </em><em>list</em><em>, </em><em>str</em>) Hour for execution. Either 0…23, [0…23, 0…23, …] or <a class="reference internal" href="#task.crontab.ANY" title="task.crontab.ANY"><code class="xref py py-const docutils literal notranslate"><span class="pre">crontab.ANY</span></code></a> for every Hour.</p></li>
<li><p><strong>day_of_month</strong> (<em>int</em><em>, </em><em>list</em><em>, </em><em>str</em>) Day of Month for execution. Either 0…31, [0…31, 0…31, …] or <a class="reference internal" href="#task.crontab.ANY" title="task.crontab.ANY"><code class="xref py py-const docutils literal notranslate"><span class="pre">crontab.ANY</span></code></a> for every Day of Month.</p></li>
<li><p><strong>month</strong> (<em>int</em><em>, </em><em>list</em><em>, </em><em>str</em>) Month for execution. Either 0…12, [0…12, 0…12, …] or <a class="reference internal" href="#task.crontab.ANY" title="task.crontab.ANY"><code class="xref py py-const docutils literal notranslate"><span class="pre">crontab.ANY</span></code></a> for every Month.</p></li>
<li><p><strong>day_of_week</strong> (<em>int</em><em>, </em><em>list</em><em>, </em><em>str</em>) Day of Week for execution. Either 0…6, [0…6, 0…6, …] or <a class="reference internal" href="#task.crontab.ANY" title="task.crontab.ANY"><code class="xref py py-const docutils literal notranslate"><span class="pre">crontab.ANY</span></code></a> for every Day of Week.</p></li>
<li><p><strong>callback</strong> (<em>func</em>) The callback to be executed. The instance of <code class="xref py py-class docutils literal notranslate"><span class="pre">cronjob</span></code> will be given as the first, args and kwargs as the following parameters.</p></li>
</ul>
</dd>
</dl>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>This class should not be used stand alone. An instance will be created by adding a cronjob by using <a class="reference internal" href="#task.crontab.add_cronjob" title="task.crontab.add_cronjob"><code class="xref py py-func docutils literal notranslate"><span class="pre">crontab.add_cronjob()</span></code></a>.</p>
</div>
<dl class="py class">
<dt class="sig sig-object py" id="task.crontab.cronjob.all_match">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">all_match</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">iterable</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">()</span></span></em>, <em class="sig-param"><span class="positional-only-separator o"><abbr title="Positional-only parameter separator (PEP 570)"><span class="pre">/</span></abbr></span></em><span class="sig-paren">)</span><a class="headerlink" href="#task.crontab.cronjob.all_match" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">set</span></code></p>
<p>Universal set - match everything</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="task.crontab.cronjob.cron_execution">
<span class="sig-name descname"><span class="pre">cron_execution</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tm</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#task.crontab.cronjob.cron_execution" title="Link to this definition"></a></dt>
<dd><p>This Methods executes the Cron-Callback, if a execution is needed for the given time (depending on the parameters on initialisation)</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>tm</strong> (<em>int</em>) (Current) Time Value to be checked. The time needs to be given in seconds since 1970 (e.g. generated by int(time.time())).</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="task.crontab.cronjob.set_trigger_conditions">
<span class="sig-name descname"><span class="pre">set_trigger_conditions</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">minute</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">hour</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">day_of_month</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">month</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">day_of_week</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#task.crontab.cronjob.set_trigger_conditions" title="Link to this definition"></a></dt>
<dd><p>This Method changes the execution parameters.</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>minute</strong> (<em>int</em><em>, </em><em>list</em><em>, </em><em>str</em>) Minute for execution. Either 0…59, [0…59, 0…59, …] or <a class="reference internal" href="#task.crontab.ANY" title="task.crontab.ANY"><code class="xref py py-const docutils literal notranslate"><span class="pre">crontab.ANY</span></code></a> for every Minute.</p></li>
<li><p><strong>hour</strong> (<em>int</em><em>, </em><em>list</em><em>, </em><em>str</em>) Hour for execution. Either 0…23, [0…23, 0…23, …] or <a class="reference internal" href="#task.crontab.ANY" title="task.crontab.ANY"><code class="xref py py-const docutils literal notranslate"><span class="pre">crontab.ANY</span></code></a> for every Hour.</p></li>
<li><p><strong>day_of_month</strong> (<em>int</em><em>, </em><em>list</em><em>, </em><em>str</em>) Day of Month for execution. Either 0…31, [0…31, 0…31, …] or <a class="reference internal" href="#task.crontab.ANY" title="task.crontab.ANY"><code class="xref py py-const docutils literal notranslate"><span class="pre">crontab.ANY</span></code></a> for every Day of Month.</p></li>
<li><p><strong>month</strong> (<em>int</em><em>, </em><em>list</em><em>, </em><em>str</em>) Month for execution. Either 0…12, [0…12, 0…12, …] or <a class="reference internal" href="#task.crontab.ANY" title="task.crontab.ANY"><code class="xref py py-const docutils literal notranslate"><span class="pre">crontab.ANY</span></code></a> for every Month.</p></li>
<li><p><strong>day_of_week</strong> (<em>int</em><em>, </em><em>list</em><em>, </em><em>str</em>) Day of Week for execution. Either 0…6, [0…6, 0…6, …] or <a class="reference internal" href="#task.crontab.ANY" title="task.crontab.ANY"><code class="xref py py-const docutils literal notranslate"><span class="pre">crontab.ANY</span></code></a> for every Day of Week.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="task.delayed">
<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">task.</span></span><span class="sig-name descname"><span class="pre">delayed</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">cycle_time</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="headerlink" href="#task.delayed" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#task.periodic" title="task.periodic"><code class="xref py py-class docutils literal notranslate"><span class="pre">periodic</span></code></a></p>
<p>Class to execute a callback a given time in the future. See also parent <a class="reference internal" href="#task.periodic" title="task.periodic"><code class="xref py py-class docutils literal notranslate"><span class="pre">periodic</span></code></a>.</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>time</strong> (<em>float</em>) Delay time for execution of the given callback</p></li>
<li><p><strong>callback</strong> (<em>callback</em>) Callback to be executed</p></li>
<li><p><strong>args</strong> (<em>args</em>) Arguments to be given to callback</p></li>
<li><p><strong>kwargs</strong> (<em>kwargs</em>) Keword Arguments to be given to callback</p></li>
</ul>
</dd>
</dl>
<p><strong>Example:</strong></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="ch">#!/usr/bin/env python</span>
<span class="c1"># -*- coding: UTF-8 -*-</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">sys</span>
<span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">&#39;../..&#39;</span><span class="p">)</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">task</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">time</span>
<span class="k">def</span><span class="w"> </span><span class="nf">time_print</span><span class="p">(</span><span class="n">txt</span><span class="p">):</span>
<span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">time</span><span class="o">.</span><span class="n">asctime</span><span class="p">()</span> <span class="o">+</span> <span class="s1">&#39;: &#39;</span> <span class="o">+</span> <span class="n">txt</span> <span class="o">+</span> <span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;task.delayed example:</span><span class="se">\n</span><span class="s2">---------------------&quot;</span><span class="p">)</span>
<span class="n">dt</span> <span class="o">=</span> <span class="n">task</span><span class="o">.</span><span class="n">delayed</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="n">time_print</span><span class="p">,</span> <span class="s2">&quot;A delayed hello!&quot;</span><span class="p">)</span>
<span class="n">dt</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">time_print</span><span class="p">(</span><span class="s2">&quot;starting...&quot;</span><span class="p">)</span>
<span class="n">dt</span><span class="o">.</span><span class="n">join</span><span class="p">()</span>
<span class="k">finally</span><span class="p">:</span>
<span class="n">dt</span><span class="o">.</span><span class="n">stop</span><span class="p">()</span>
</pre></div>
</div>
<p>Will result to the following output:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>task.delayed example:
---------------------
Sun Aug 17 11:05:40 2025: starting...
Sun Aug 17 11:05:45 2025: A delayed hello!
</pre></div>
</div>
<dl class="py method">
<dt class="sig sig-object py" id="task.delayed.run">
<span class="sig-name descname"><span class="pre">run</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#task.delayed.run" title="Link to this definition"></a></dt>
<dd><p>This starts the timer for the delayed execution.</p>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="task.periodic">
<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">task.</span></span><span class="sig-name descname"><span class="pre">periodic</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">cycle_time</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="headerlink" href="#task.periodic" 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>Class to execute a callback cyclicly.</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>cycle_time</strong> (<em>float</em>) Cycle time in seconds callback will be executed every <em>cycle_time</em> seconds</p></li>
<li><p><strong>callback</strong> (<em>callback</em>) Callback to be executed</p></li>
<li><p><strong>args</strong> (<em>args</em>) Arguments to be given to the callback</p></li>
<li><p><strong>kwargs</strong> (<em>kwargs</em>) Keword Arguments to be given to callback</p></li>
</ul>
</dd>
</dl>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>The Callback will get this instance as first argument, followed by <code class="xref py py-data docutils literal notranslate"><span class="pre">args</span></code> und <code class="xref py py-data docutils literal notranslate"><span class="pre">kwargs</span></code>.</p>
</div>
<p><strong>Example:</strong></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="ch">#!/usr/bin/env python</span>
<span class="c1"># -*- coding: UTF-8 -*-</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">sys</span>
<span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">&#39;../..&#39;</span><span class="p">)</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">task</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">time</span>
<span class="n">task_num</span> <span class="o">=</span> <span class="mi">0</span>
<span class="k">def</span><span class="w"> </span><span class="nf">time_print</span><span class="p">(</span><span class="n">txt</span><span class="p">):</span>
<span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">time</span><span class="o">.</span><span class="n">asctime</span><span class="p">()</span> <span class="o">+</span> <span class="s1">&#39;: &#39;</span> <span class="o">+</span> <span class="n">txt</span> <span class="o">+</span> <span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span>
<span class="k">def</span><span class="w"> </span><span class="nf">hello</span><span class="p">(</span><span class="n">rt</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
<span class="k">global</span> <span class="n">task_num</span>
<span class="n">task_num</span> <span class="o">+=</span> <span class="mi">1</span>
<span class="k">if</span> <span class="n">task_num</span> <span class="o">&gt;=</span> <span class="mi">5</span><span class="p">:</span>
<span class="n">rt</span><span class="o">.</span><span class="n">stop</span><span class="p">()</span>
<span class="n">tn</span> <span class="o">=</span> <span class="n">task_num</span>
<span class="n">time_print</span><span class="p">(</span><span class="s2">&quot;(Task </span><span class="si">%d</span><span class="s2">) Hello </span><span class="si">%s</span><span class="s2">!&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">tn</span><span class="p">,</span> <span class="n">name</span><span class="p">))</span>
<span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mf">3.8</span><span class="p">)</span>
<span class="n">time_print</span><span class="p">(</span><span class="s2">&quot;(Task </span><span class="si">%d</span><span class="s2">) Ende!&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">tn</span><span class="p">))</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;task.periodic example:</span><span class="se">\n</span><span class="s2">----------------------&quot;</span><span class="p">)</span>
<span class="n">pt</span> <span class="o">=</span> <span class="n">task</span><span class="o">.</span><span class="n">periodic</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="n">hello</span><span class="p">,</span> <span class="s2">&quot;from periodic example&quot;</span><span class="p">)</span>
<span class="n">pt</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">time_print</span><span class="p">(</span><span class="s2">&quot;starting...&quot;</span><span class="p">)</span>
<span class="n">pt</span><span class="o">.</span><span class="n">join</span><span class="p">()</span>
<span class="k">finally</span><span class="p">:</span>
<span class="n">pt</span><span class="o">.</span><span class="n">stop</span><span class="p">()</span>
</pre></div>
</div>
<p>Will result to the following output:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>task.periodic example:
----------------------
Sun Aug 17 11:05:45 2025: starting...
Sun Aug 17 11:05:45 2025: (Task 1) Hello from periodic example!
Sun Aug 17 11:05:47 2025: (Task 2) Hello from periodic example!
Sun Aug 17 11:05:49 2025: (Task 1) Ende!
Sun Aug 17 11:05:49 2025: (Task 3) Hello from periodic example!
Sun Aug 17 11:05:51 2025: (Task 2) Ende!
Sun Aug 17 11:05:51 2025: (Task 4) Hello from periodic example!
Sun Aug 17 11:05:53 2025: (Task 3) Ende!
Sun Aug 17 11:05:53 2025: (Task 5) Hello from periodic example!
</pre></div>
</div>
<dl class="py method">
<dt class="sig sig-object py" id="task.periodic.join">
<span class="sig-name descname"><span class="pre">join</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#task.periodic.join" title="Link to this definition"></a></dt>
<dd><p>This blocks till the cyclic task is terminated.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Using join means that somewhere has to be a condition calling <a class="reference internal" href="#task.periodic.stop" title="task.periodic.stop"><code class="xref py py-func docutils literal notranslate"><span class="pre">stop()</span></code></a> to terminate. Otherwise <code class="xref py py-func docutils literal notranslate"><span class="pre">task.join()</span></code> will never return.</p>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="task.periodic.run">
<span class="sig-name descname"><span class="pre">run</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#task.periodic.run" title="Link to this definition"></a></dt>
<dd><p>This starts the cyclic execution of the given callback.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="task.periodic.stop">
<span class="sig-name descname"><span class="pre">stop</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#task.periodic.stop" title="Link to this definition"></a></dt>
<dd><p>This stops the execution of any further task.</p>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="task.queue">
<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">task.</span></span><span class="sig-name descname"><span class="pre">queue</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">expire</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="headerlink" href="#task.queue" 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>Class to execute queued callbacks.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>expire</strong> (<em>bool</em>) The default value for expire. See also <a class="reference internal" href="#task.queue.expire" title="task.queue.expire"><code class="xref py py-func docutils literal notranslate"><span class="pre">expire()</span></code></a>.</p>
</dd>
</dl>
<p><strong>Example:</strong></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="ch">#!/usr/bin/env python</span>
<span class="c1"># -*- coding: UTF-8 -*-</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">sys</span>
<span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">&#39;../..&#39;</span><span class="p">)</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">task</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">time</span>
<span class="n">task_num</span> <span class="o">=</span> <span class="mi">0</span>
<span class="k">def</span><span class="w"> </span><span class="nf">time_print</span><span class="p">(</span><span class="n">txt</span><span class="p">):</span>
<span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">time</span><span class="o">.</span><span class="n">asctime</span><span class="p">()</span> <span class="o">+</span> <span class="s1">&#39;: &#39;</span> <span class="o">+</span> <span class="n">txt</span> <span class="o">+</span> <span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span>
<span class="k">def</span><span class="w"> </span><span class="nf">hello</span><span class="p">(</span><span class="n">rt</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
<span class="k">global</span> <span class="n">task_num</span>
<span class="n">task_num</span> <span class="o">+=</span> <span class="mi">1</span>
<span class="k">if</span> <span class="n">task_num</span> <span class="o">&gt;=</span> <span class="mi">5</span><span class="p">:</span>
<span class="n">rt</span><span class="o">.</span><span class="n">stop</span><span class="p">()</span>
<span class="n">tn</span> <span class="o">=</span> <span class="n">task_num</span>
<span class="n">time_print</span><span class="p">(</span><span class="s2">&quot;(Task </span><span class="si">%d</span><span class="s2">) Hello </span><span class="si">%s</span><span class="s2">!&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">tn</span><span class="p">,</span> <span class="n">name</span><span class="p">))</span>
<span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mf">3.8</span><span class="p">)</span>
<span class="n">time_print</span><span class="p">(</span><span class="s2">&quot;(Task </span><span class="si">%d</span><span class="s2">) Ende!&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">tn</span><span class="p">))</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;task.queue example:</span><span class="se">\n</span><span class="s2">----------------------&quot;</span><span class="p">)</span>
<span class="n">q</span> <span class="o">=</span> <span class="n">task</span><span class="o">.</span><span class="n">queue</span><span class="p">()</span>
<span class="n">q</span><span class="o">.</span><span class="n">enqueue</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="n">hello</span><span class="p">,</span> <span class="s2">&quot;from queue example (5)&quot;</span><span class="p">)</span>
<span class="n">q</span><span class="o">.</span><span class="n">enqueue</span><span class="p">(</span><span class="mi">6</span><span class="p">,</span> <span class="n">hello</span><span class="p">,</span> <span class="s2">&quot;from queue example (6)&quot;</span><span class="p">)</span>
<span class="n">q</span><span class="o">.</span><span class="n">enqueue</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="n">hello</span><span class="p">,</span> <span class="s2">&quot;from queue example (4)&quot;</span><span class="p">)</span>
<span class="n">q</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
</pre></div>
</div>
<p>Will result to the following output:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>task.queue example:
----------------------
Sun Aug 17 11:06:05 2025: (Task 1) Hello from queue example (4)!
Sun Aug 17 11:06:09 2025: (Task 1) Ende!
Sun Aug 17 11:06:09 2025: (Task 2) Hello from queue example (5)!
Sun Aug 17 11:06:13 2025: (Task 2) Ende!
Sun Aug 17 11:06:13 2025: (Task 3) Hello from queue example (6)!
Sun Aug 17 11:06:16 2025: (Task 3) Ende!
</pre></div>
</div>
<dl class="py method">
<dt class="sig sig-object py" id="task.queue.clean_queue">
<span class="sig-name descname"><span class="pre">clean_queue</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#task.queue.clean_queue" title="Link to this definition"></a></dt>
<dd><p>This Methods removes all jobs from the queue.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Be aware that already running jobs will not be terminated.</p>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="task.queue.enqueue">
<span class="sig-name descname"><span class="pre">enqueue</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">priority</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="headerlink" href="#task.queue.enqueue" title="Link to this definition"></a></dt>
<dd><p>This enqueues a given callback.</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>priority</strong> (<em>number</em>) The priority indication number of this task. The lowest value will be queued first.</p></li>
<li><p><strong>callback</strong> (<em>callback</em>) Callback to be executed</p></li>
<li><p><strong>args</strong> (<em>args</em>) Arguments to be given to callback</p></li>
<li><p><strong>kwargs</strong> (<em>kwargs</em>) Keword Arguments to be given to callback</p></li>
</ul>
</dd>
</dl>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Callback will get this instance as first argument, followed by <code class="xref py py-data docutils literal notranslate"><span class="pre">args</span></code> und <code class="xref py py-data docutils literal notranslate"><span class="pre">kwargs</span></code>.</p>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="task.queue.expire">
<span class="sig-name descname"><span class="pre">expire</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#task.queue.expire" title="Link to this definition"></a></dt>
<dd><p>This sets the expire flag. That means that the process will stop after queue gets empty.</p>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="task.queue.job">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">job</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">priority</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="headerlink" href="#task.queue.job" 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>
<dl class="py method">
<dt class="sig sig-object py" id="task.queue.job.run">
<span class="sig-name descname"><span class="pre">run</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">queue</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#task.queue.job.run" title="Link to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="task.queue.qsize">
<span class="sig-name descname"><span class="pre">qsize</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#task.queue.qsize" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="task.queue.run">
<span class="sig-name descname"><span class="pre">run</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#task.queue.run" title="Link to this definition"></a></dt>
<dd><p>This starts the execution of the queued callbacks.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="task.queue.stop">
<span class="sig-name descname"><span class="pre">stop</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#task.queue.stop" title="Link to this definition"></a></dt>
<dd><p>This sets the stop flag. That means that the process will stop after finishing the active task.</p>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="task.threaded_queue">
<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">task.</span></span><span class="sig-name descname"><span class="pre">threaded_queue</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">expire</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#task.threaded_queue" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#task.queue" title="task.queue"><code class="xref py py-class docutils literal notranslate"><span class="pre">queue</span></code></a></p>
<p>Class to execute queued callbacks in a background thread (See also parent <a class="reference internal" href="#task.queue" title="task.queue"><code class="xref py py-class docutils literal notranslate"><span class="pre">queue</span></code></a>).</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>expire</strong> (<em>bool</em>) The default value for expire. See also <a class="reference internal" href="#task.queue.expire" title="task.queue.expire"><code class="xref py py-func docutils literal notranslate"><span class="pre">queue.expire()</span></code></a>.</p>
</dd>
</dl>
<p><strong>Example:</strong></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="ch">#!/usr/bin/env python</span>
<span class="c1"># -*- coding: UTF-8 -*-</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">sys</span>
<span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">&#39;../..&#39;</span><span class="p">)</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">task</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">time</span>
<span class="n">task_num</span> <span class="o">=</span> <span class="mi">0</span>
<span class="k">def</span><span class="w"> </span><span class="nf">time_print</span><span class="p">(</span><span class="n">txt</span><span class="p">):</span>
<span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">time</span><span class="o">.</span><span class="n">asctime</span><span class="p">()</span> <span class="o">+</span> <span class="s1">&#39;: &#39;</span> <span class="o">+</span> <span class="n">txt</span> <span class="o">+</span> <span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span>
<span class="k">def</span><span class="w"> </span><span class="nf">hello</span><span class="p">(</span><span class="n">rt</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
<span class="k">global</span> <span class="n">task_num</span>
<span class="n">task_num</span> <span class="o">+=</span> <span class="mi">1</span>
<span class="k">if</span> <span class="n">task_num</span> <span class="o">&gt;=</span> <span class="mi">5</span><span class="p">:</span>
<span class="n">rt</span><span class="o">.</span><span class="n">stop</span><span class="p">()</span>
<span class="n">tn</span> <span class="o">=</span> <span class="n">task_num</span>
<span class="n">time_print</span><span class="p">(</span><span class="s2">&quot;(Task </span><span class="si">%d</span><span class="s2">) Hello </span><span class="si">%s</span><span class="s2">!&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">tn</span><span class="p">,</span> <span class="n">name</span><span class="p">))</span>
<span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mf">3.8</span><span class="p">)</span>
<span class="n">time_print</span><span class="p">(</span><span class="s2">&quot;(Task </span><span class="si">%d</span><span class="s2">) Ende!&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">tn</span><span class="p">))</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;task.threaded_queue example:</span><span class="se">\n</span><span class="s2">-------------------------------&quot;</span><span class="p">)</span>
<span class="n">tq</span> <span class="o">=</span> <span class="n">task</span><span class="o">.</span><span class="n">threaded_queue</span><span class="p">()</span>
<span class="n">tq</span><span class="o">.</span><span class="n">enqueue</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="n">hello</span><span class="p">,</span> <span class="s2">&quot;from queue example (5)&quot;</span><span class="p">)</span>
<span class="n">tq</span><span class="o">.</span><span class="n">enqueue</span><span class="p">(</span><span class="mi">6</span><span class="p">,</span> <span class="n">hello</span><span class="p">,</span> <span class="s2">&quot;from queue example (6)&quot;</span><span class="p">)</span>
<span class="n">tq</span><span class="o">.</span><span class="n">enqueue</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="n">hello</span><span class="p">,</span> <span class="s2">&quot;from queue example (4)&quot;</span><span class="p">)</span>
<span class="n">tq</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">time_print</span><span class="p">(</span><span class="s2">&quot;starting...&quot;</span><span class="p">)</span>
<span class="n">tq</span><span class="o">.</span><span class="n">join</span><span class="p">()</span>
<span class="k">finally</span><span class="p">:</span>
<span class="n">tq</span><span class="o">.</span><span class="n">stop</span><span class="p">()</span>
</pre></div>
</div>
<p>Will result to the following output:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>task.threaded_queue example:
-------------------------------
Sun Aug 17 11:05:53 2025: (Task 1) Hello from queue example (4)!
Sun Aug 17 11:05:53 2025: starting...
Sun Aug 17 11:05:57 2025: (Task 1) Ende!
Sun Aug 17 11:05:57 2025: (Task 2) Hello from queue example (5)!
Sun Aug 17 11:06:01 2025: (Task 2) Ende!
Sun Aug 17 11:06:01 2025: (Task 3) Hello from queue example (6)!
Sun Aug 17 11:06:05 2025: (Task 3) Ende!
</pre></div>
</div>
<dl class="py method">
<dt class="sig sig-object py" id="task.threaded_queue.join">
<span class="sig-name descname"><span class="pre">join</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#task.threaded_queue.join" title="Link to this definition"></a></dt>
<dd><p>This blocks till the queue is empty.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>If the queue does not run dry, join will block till the end of the days.</p>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="task.threaded_queue.run">
<span class="sig-name descname"><span class="pre">run</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#task.threaded_queue.run" title="Link to this definition"></a></dt>
<dd><p>This starts the execution of the queued callbacks.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="task.threaded_queue.stop">
<span class="sig-name descname"><span class="pre">stop</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#task.threaded_queue.stop" title="Link to this definition"></a></dt>
<dd><p>This sets the stop flag. That means that the process will stop after finishing the active task.</p>
</dd></dl>
</dd></dl>
</section>
<div class="clearer"></div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="Main">
<div class="sphinxsidebarwrapper">
<div>
<h3><a href="#">Table of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#">task package</a><ul>
<li><a class="reference internal" href="#task-task-module">task (Task Module)</a></li>
<li><a class="reference internal" href="#task.crontab"><code class="docutils literal notranslate"><span class="pre">crontab</span></code></a><ul>
<li><a class="reference internal" href="#task.crontab.ANY"><code class="docutils literal notranslate"><span class="pre">crontab.ANY</span></code></a></li>
<li><a class="reference internal" href="#task.crontab.add_cronjob"><code class="docutils literal notranslate"><span class="pre">crontab.add_cronjob()</span></code></a></li>
<li><a class="reference internal" href="#task.crontab.cronjob"><code class="docutils literal notranslate"><span class="pre">crontab.cronjob</span></code></a><ul>
<li><a class="reference internal" href="#task.crontab.cronjob.all_match"><code class="docutils literal notranslate"><span class="pre">crontab.cronjob.all_match</span></code></a></li>
<li><a class="reference internal" href="#task.crontab.cronjob.cron_execution"><code class="docutils literal notranslate"><span class="pre">crontab.cronjob.cron_execution()</span></code></a></li>
<li><a class="reference internal" href="#task.crontab.cronjob.set_trigger_conditions"><code class="docutils literal notranslate"><span class="pre">crontab.cronjob.set_trigger_conditions()</span></code></a></li>
</ul>
</li>
</ul>
</li>
<li><a class="reference internal" href="#task.delayed"><code class="docutils literal notranslate"><span class="pre">delayed</span></code></a><ul>
<li><a class="reference internal" href="#task.delayed.run"><code class="docutils literal notranslate"><span class="pre">delayed.run()</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#task.periodic"><code class="docutils literal notranslate"><span class="pre">periodic</span></code></a><ul>
<li><a class="reference internal" href="#task.periodic.join"><code class="docutils literal notranslate"><span class="pre">periodic.join()</span></code></a></li>
<li><a class="reference internal" href="#task.periodic.run"><code class="docutils literal notranslate"><span class="pre">periodic.run()</span></code></a></li>
<li><a class="reference internal" href="#task.periodic.stop"><code class="docutils literal notranslate"><span class="pre">periodic.stop()</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#task.queue"><code class="docutils literal notranslate"><span class="pre">queue</span></code></a><ul>
<li><a class="reference internal" href="#task.queue.clean_queue"><code class="docutils literal notranslate"><span class="pre">queue.clean_queue()</span></code></a></li>
<li><a class="reference internal" href="#task.queue.enqueue"><code class="docutils literal notranslate"><span class="pre">queue.enqueue()</span></code></a></li>
<li><a class="reference internal" href="#task.queue.expire"><code class="docutils literal notranslate"><span class="pre">queue.expire()</span></code></a></li>
<li><a class="reference internal" href="#task.queue.job"><code class="docutils literal notranslate"><span class="pre">queue.job</span></code></a><ul>
<li><a class="reference internal" href="#task.queue.job.run"><code class="docutils literal notranslate"><span class="pre">queue.job.run()</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#task.queue.qsize"><code class="docutils literal notranslate"><span class="pre">queue.qsize()</span></code></a></li>
<li><a class="reference internal" href="#task.queue.run"><code class="docutils literal notranslate"><span class="pre">queue.run()</span></code></a></li>
<li><a class="reference internal" href="#task.queue.stop"><code class="docutils literal notranslate"><span class="pre">queue.stop()</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#task.threaded_queue"><code class="docutils literal notranslate"><span class="pre">threaded_queue</span></code></a><ul>
<li><a class="reference internal" href="#task.threaded_queue.join"><code class="docutils literal notranslate"><span class="pre">threaded_queue.join()</span></code></a></li>
<li><a class="reference internal" href="#task.threaded_queue.run"><code class="docutils literal notranslate"><span class="pre">threaded_queue.run()</span></code></a></li>
<li><a class="reference internal" href="#task.threaded_queue.stop"><code class="docutils literal notranslate"><span class="pre">threaded_queue.stop()</span></code></a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div role="note" aria-label="source link">
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="_sources/task.rst.txt"
rel="nofollow">Show Source</a></li>
</ul>
</div>
<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>
</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><img src="_static/py.svg" alt="Python logo" style="vertical-align: middle; margin-top: -1px"></li>
<li><a href="https://www.python.org/">Python</a> &#187;</li>
<li class="switchers">
<div class="language_switcher_placeholder"></div>
<div class="version_switcher_placeholder"></div>
</li>
<li>
<a href="index.html">task documentation</a> &#187;
</li>
<li class="nav-item nav-item-this"><a href="">task package</a></li>
<li class="right">
<div class="inline-search" role="search">
<form class="inline-search" action="search.html" method="get">
<input placeholder="Quick search" aria-label="Quick search" type="search" name="q" id="search-box">
<input type="submit" value="Go">
</form>
</div>
|
</li>
<li class="right">
<label class="theme-selector-label">
Theme
<select class="theme-selector" oninput="activateTheme(this.value)">
<option value="auto" selected>Auto</option>
<option value="light">Light</option>
<option value="dark">Dark</option>
</select>
</label> |</li>
</ul>
</div>
<div class="footer">
&copy;
Copyright
2025, Dirk Alders.
<br>
This page is licensed under the Python Software Foundation License Version 2.
<br>
Examples, recipes, and other code in the documentation are additionally licensed under the Zero Clause BSD License.
<br>
<br>
The Python Software Foundation is a non-profit corporation.
<a href="https://www.python.org/psf/donations/">Please donate.</a>
<br>
<br>
<br>
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.2.3.
</div>
</body>
</html>