A lightweight scheduler that runs tasks in the background
Project description
PyBackground
PyBackground is
- a lightweight scheduler that runs tasks in the background
- written in Python (3.7+) Standard Library
PyBackground supports to
- execute tasks using thread pool
- run in the background (or foreground)
- use
@taskdecorator 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.
-
stoppedThe scheduler is stopped or not,
True(default) orFalse. -
latest_idThe latest task id, which may be useful for
pybackground.BlockingScheduler. -
taskThe task id,
Taskobject (collections.namedtuple('Task', 'fn, args, kwargs')) dictionary,{}as default. -
futureThe task id,
Futureobject 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
@taskdecorator 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 tosheduler.start(fn, args, kwargs)using normal function definition.
Related Projects
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a8025039a4236253e045a7e87af1013098412d068151b29ea3ad6f38c83b3650
|
|
| MD5 |
6f7226a9edeb54524af4963f957f451a
|
|
| BLAKE2b-256 |
476826195c3f8870de985ddc5fe20ecc857c91965fb31939b05348e3e99ca5d8
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
52537f7a2787d91dde9f781687588697b34ad63fc9288d425c39afc879f57b07
|
|
| MD5 |
21690e972b0d634453c6b352b14118a3
|
|
| BLAKE2b-256 |
dc19b731ffcaa6b7d665fb1da53aebf8f5d4972a4fb6caab04980a41a552da13
|