/polling2

Powerful polling utility in Python

Primary LanguagePythonMIT LicenseMIT

Build Status PyPI PyPI Documentation Status Quality Gate Status Bugs Vulnerabilities Security Rating Code Smells

polling2

Never write another polling function again!

Documentation available at Read the Docs

You can install the package from Pypi

Polling2 is a powerful python utility used to wait for a function to return a certain expected condition.

Some possible uses cases include:

  • Wait for API response to return with code 200
  • Wait for a file to exist (or not exist)
  • Wait for a thread lock on a resource to expire

Polling2 is handy for getting rid of all that duplicated polling-code. Often, applications require retrying until the correct response is returned. Why re-implement the ability to poll again and again? Use Polling2!

Polling2 is a fork of the original polling. It was forked when the original maintainer failed to respond to issues or PRs.

Polling2 is under active development. Would you like to see a particular feature? Ask and thou shall recieve.

Installation

pip install polling2

Development installation

# install lib, but use system links from the repo into sitepackages.
python setup.py develop
# install test dependenices.
python setup.py test
# run the tests
pytest tests

Note, tox is also available, as well as pre-commit.

# install tox and run it
pip install tox
tox

Pre-commit performs auto-formatting and things of that nature before each commit.

pip install pre-commit
pre-commit install

Now pre-commit will run automatically on git commit.

Example:

# This call will wait until the file exists, checking every 0.1 seconds and stopping after 3 seconds have elapsed
file_handle = polling2.poll(
    lambda: open('/tmp/myfile.txt'),
    ignore_exceptions=(IOError,),
    timeout=3,
    step=0.1)

# Polling will return the value of your polling function, so you can now interact with it
file_handle.close()

There are more examples in the documentation.

API and user guide at Read the Docs

Read the Docs