Skip to main content

A lightweight scheduler that runs tasks in the background

Project description

PyBackground

PyBackground is

PyBackground supports to

  • execute tasks using thread pool
  • run in the background (or foreground)
  • use @task decorator to define task

Quickstart

Define your functions:

import time

def now(cost=1):
    time.sleep(cost)
    print( time.strftime('%Y-%m-%d %H:%M:%S %Z', time.localtime()) )

def utcnow(cost=1):
    time.sleep(cost)
    print( time.strftime('%Y-%m-%d %H:%M:%S %Z', time.gmtime()) )

Create a PyBackground scheduler and start executing your functions:

import pybackground

sched = pybackground.BackgroundScheduler()
sched.start(now, args=(1,))
sched.start(utcnow, args=(1,))

Shutdown the scheduler:

sched.shutdown(wait=True)

Handle with the infinite loops

Let's work based on now(cost) as an example:

import pybackground

sched = pybackground.BackgroundScheduler()
print(sched.stopped)

def timer(interval=3):
    while not sched.stopped:
        now()

sched.start(timer, args=(3,))

timer(interval) then runs forever in a seperate thread. When you'd like to terminate it, shutdown the scheduler as usual:

sched.shutdown(wait=True)

Play with the @task decorator

Use @task decorator to define your functions and start executing them, scheduling now(cost) and utcnow(cost) as an example:

import pybackground

sched = pybackground.BackgroundScheduler()

import time

@pybackground.task(sched)
def now(cost=1):
    time.sleep(cost)
    print( time.strftime('%Y-%m-%d %H:%M:%S %Z', time.localtime()) )

now.start(cost=1)

@pybackground.task(sched)
def utcnow(cost=1):
    time.sleep(cost)
    print( time.strftime('%Y-%m-%d %H:%M:%S %Z', time.gmtime()) )

utcnow.start(cost=1)

Shutdown the scheduler in normal way:

sched.shutdown(wait=True)

Install PyBackground

$ pip install pybackground

Documentation

BackgroundScheduler/BlockingScheduler

class pybackground.BackgroundScheduler/BlockingScheduler(max_worker=<num_cpu_cores>)

max_worker is set for ThreadPoolExecutor, default value is the number of CPU cores.

  • stopped

    The scheduler is stopped or not, True (default) or False.

  • latest_id

    The latest task id, which may be useful for pybackground.BlockingScheduler.

  • task

    The task id, Task object (collections.namedtuple('Task', 'fn, args, kwargs')) dictionary, {} as default.

  • future

    The task id, Future object dictionary, {} as default.

  • start(fn, args=(), kwargs={})

    Let scheduler start executing your function using thread pool in the background (or foreground). It returns corresponding task id.

  • shutdown(wait=True)

    Shutdown the scheduler.

task

class pybackground.task(scheduler)
  • Use @task decorator to define your functions and start executing them:

    @task(scheduler)
    def fn(args, kwargs):
        pass
    
    fn.start(*args, **kwargs)
    

    fn.start(*args, **kwargs) is equivaluent to sheduler.start(fn, args, kwargs) using normal function definition.

Related Projects

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

PyBackground-0.1.2.tar.gz (3.6 kB view details)

Uploaded Source

Built Distribution

PyBackground-0.1.2-py3-none-any.whl (5.0 kB view details)

Uploaded Python 3

File details

Details for the file PyBackground-0.1.2.tar.gz.

File metadata

  • Download URL: PyBackground-0.1.2.tar.gz
  • Upload date:
  • Size: 3.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.23.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.7

File hashes

Hashes for PyBackground-0.1.2.tar.gz
Algorithm Hash digest
SHA256 a8025039a4236253e045a7e87af1013098412d068151b29ea3ad6f38c83b3650
MD5 6f7226a9edeb54524af4963f957f451a
BLAKE2b-256 476826195c3f8870de985ddc5fe20ecc857c91965fb31939b05348e3e99ca5d8

See more details on using hashes here.

File details

Details for the file PyBackground-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: PyBackground-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 5.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.23.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.7

File hashes

Hashes for PyBackground-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 52537f7a2787d91dde9f781687588697b34ad63fc9288d425c39afc879f57b07
MD5 21690e972b0d634453c6b352b14118a3
BLAKE2b-256 dc19b731ffcaa6b7d665fb1da53aebf8f5d4972a4fb6caab04980a41a552da13

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