Metadata-Version: 2.4
Name: pyat
Version: 0.0.2
Author-email: Stuart Longland <stuartl@vrt.com.au>
Description-Content-Type: text/x-rst
License-File: LICENSE
Requires-Dist: six
Dynamic: license-file

pyat
====

`pyat` is the Python analogue of the Unix `at` daemon, it runs tasks at
specified times, optionally providing a means to pass around results and
exceptions.

The interface is intended to be able to support a variety of usage scenarios
including synchronous applications with a main loop, sporadically called
functions, multithreadded/multiprocessing based code and asynchronous frameworks
like Twisted or Tornado.

REQUIREMENTS
============

- `six`_

TYPICAL USAGE
=============

::

    import pyat.sync
    import time

    scheduler = pyat.sync.SynchronousScheduler()

    # ... etc ...

    background_task = None

    while True:
        # ... etc ...

        scheduler.poll()

        if foo == bar:
            # Do something in 10 seconds.
            background_task = scheduler.schedule(
                time.time() + 10, my_task, arg1, arg2, kwarg1=arg3)

        elif foo == baz:
            # Cancel task
            background_task.cancel()
            background_task = None

        elif (foo == quux) and (background_task is not None):
            # Check back on background task
            try:
                result = background_task.result
                # do something with result
                background_task = None
            except pyat.sync.NotExecutedYet:
                # A bit too early
                pass

STATUS
======

- Synchronous implementation `pyat.sync` works.

.. _`six`: https://pythonhosted.org/six/
