zc.async

HomePage: http://packages.python.org/zc.async

Author: Gary Poster

Download: https://pypi.python.org/packages/source/z/zc.async/zc.async-1.5.4.zip

        ===========
What is it?
===========

The ``zc.async`` package provides **an easy-to-use Python tool that schedules
work persistently and reliably across multiple processes and machines.**

For instance...

- *Web apps*: maybe your web application lets users request the creation of a
  large PDF, or some other expensive task.

- *Postponed work*: maybe you have a job that needs to be done at a certain time,
  not right now.

- *Parallel processing*: maybe you have a long-running problem that can be made
  to complete faster by splitting it up into discrete parts, each performed in
  parallel, across multiple machines.

- *Serial processing*: maybe you want to decompose and serialize a job.

High-level features include the following:

- easy to use;

- flexible configuration, changeable dynamically in production;

- reliable;

- supports high availability;

- good debugging tools;

- well-tested; and

- friendly to testing.

While developed as part of the Zope project, zc.async can be used stand-alone.

=================
How does it work?
=================

The system uses the Zope Object Database (ZODB), a transactional, pickle-based
Python object database, for communication and coordination among participating
processes.

zc.async participants can each run in their own process, or share a process
(run in threads) with other code.

The Twisted framework supplies some code (failures and reactor implementations,
primarily) and some concepts to the package.

======================
Where can I read more?
======================

Quickstarts and in-depth documentation are available in the package and in
the `new and exciting on-line documentation`_.

.. _`new and exciting on-line documentation`: http://packages.python.org/zc.async/1.5.0/



=======
Changes
=======

1.5.4 (2011-03-03)
==================

- Rearrange ftesting.setUp to avoid provoking a DemoStorage bug
  present in ZODB <= 3.9.3.

- Resolved the following testing issues: signal handlers weren't cleaned
  up properly in some tests, Twisted was leaking file descriptors during
  ftesting tearDown (http://twistedmatrix.com/trac/ticket/3063), and
  the twisted.txt regression test was not repeatable due to
  Twisted's recalcitrance when it comes to stopping and subsequently
  starting a reactor instance.

- Fix two undefined variables that could trigger exceptions in corner
  cases.


1.5.3 (2009-11-15)
==================

- Made zc.async.subscribers.ThreadedDispatcherInstaller keep track of signal
  handlers it installs in a module global "signal_handlers."

- Made zc.async.ftesting.tearDown restore the signal handlers that were
  replaced by ThreadedDispatcherInstaller.

- Fix a bug in zc.async.ftesting.setUp and zc.async.testing.print_logs
  which would result in the default argument for log_file becoming
  "fixated" with an incorrect value across tests.

- Make the ftesting.txt test exercise the 'zc.async' logger in
  addition to 'zc.async.event'.

- zc.async.utils.dt_to_long coerces return value to long (test pass on 64-bit
  Python).

- Tests pass on Python 2.6

- The callable of a zc.async.job.Job (or one of its subclasses) can be a
  method on the Job itself.

1.5.2 (2009-07-22)
==================

- Fix a bug where zc.async.testing._datetime.now did not accept the same
  keyword arguments as datetime.datetime, added tests.

- Fix a bug where zc.async.testing._datetime.astimezone did not accept the same
  keyword arguments as datetime.datetime, added tests.

1.5.1 (2008-10-13)
==================

- Add a performance optimization with ``isinstance`` before ``providedBy``.

- Add support for filters to ``AgentInstaller``.

- Fix a bug which caused a condition to be always true in ``monitor.Encoder``.

1.5.0 (2008-09-21)
==================

- Documentation improvements.  Converted documentation into Sphinx system.

- Made "other" commit errors for the ``RetryCommonForever`` retry policy have
  an incremental backoff.  By default, this starts at 0 seconds, and increments
  by a second to a maximum of 60 seconds.

- Work around a memory leak in zope.i18nmessageid
  (