Skip to main content

Allow Luigi tasks to fail softly, without cancelling downstream tasks.

Project description

Provides a decorator for Luigi tasks that allows them to fail softly. Tasks that fail softly are seen by Luigi as complete, and thus don't prevent dependent tasks from running. The dependent task can check if it's dependencies actually ran successfully or failed softly.

Installation

pip install luigi_soft_failures

Usage

from luigi_soft_failures import softly_failing

Use as class decorator:

@softly_failing(catch_all=True, propagate=True)
class SomeTask(luigi.Task):
    ...

Or on demand in the requiring task:

def requires(self):
    return softly_failing(catch_all=True)(SomeTask)(some_param=42)

The dependent task can check the status of it's dependencies using failed_softly:

def run(self):
    if self.requires().failed_softly():
        ...

For a complete example see as_decorator.py.

API

softly_failing accepts the following parameters:

  • catch_all (bool, default False):

    When True, any exception thrown in the task's run method will lead to a soft failure. Otherwise, soft failures can be generated manually by calling self.fail_softly('Some error message') from the task's run method and exiting the method without exception.

  • propagate (bool, default False):

    When True, the task fails softly if any of it's dependencies failed softly, and run is never executed. Otherwise, run is executed as if the dependencies ran successfully.

  • output_dir (str, default None): Described below.

Storage of soft failure reports

Whan the wrapped task fails softly, it creates a report with the failure message or exception traceback to indicate this. These reports are stored in a directory specified in one of the following ways (in this order of precedence):

  • output_dir parameter passed to softly_failing

  • Specified in luigi.cfg:

    [luigi_soft_failures.Config]
    output_dir=/some/path
    
  • Environment variable LUIGI_SOFT_FAILURES_OUTPUT_DIR

  • Default ./soft_failures/

Limitations

  • Soft failure status is stored using a LocalTarget, so a local storage that all workers have access to is required.
  • In the Luigi visualizer, softly failed tasks are shown as complete.

Pull requests to address these are very welcome!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

luigi_soft_failures-0.1.1.tar.gz (5.4 kB view details)

Uploaded Source

Built Distribution

luigi_soft_failures-0.1.1-py2.py3-none-any.whl (5.3 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file luigi_soft_failures-0.1.1.tar.gz.

File metadata

  • Download URL: luigi_soft_failures-0.1.1.tar.gz
  • Upload date:
  • Size: 5.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/40.6.2 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.4

File hashes

Hashes for luigi_soft_failures-0.1.1.tar.gz
Algorithm Hash digest
SHA256 7ca408cc52de8123390ef573ce1641dcd6b6e7b83b70d35233f2af41955cd8ce
MD5 781bcec85261c094ffedf54ae0ecfb1b
BLAKE2b-256 c92e1eff9987869e29d87304cc6e5662db9481a6b761a4f2151fd2d799acf148

See more details on using hashes here.

File details

Details for the file luigi_soft_failures-0.1.1-py2.py3-none-any.whl.

File metadata

  • Download URL: luigi_soft_failures-0.1.1-py2.py3-none-any.whl
  • Upload date:
  • Size: 5.3 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/40.6.2 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.4

File hashes

Hashes for luigi_soft_failures-0.1.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 3da2aedc41696c5f791879fe19ab1a7beec1571c9998eeea19cec7909d2e0639
MD5 ee95cee622438bcd1167e9fd470f4538
BLAKE2b-256 746d0856f9ad304afd24a650545fdee20aa3355784dbe868162fd6b1b5f8346d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page