Skip to main content

task.py

Run your task asynchronously in the background and control/communicate with them.

![Build Status](https://api.travis-ci.org/abhinavsingh/task.py.png)

Install

pip install task.py

Usage

Basic use case of task.py is to run some unit of work asynchronously (in a separate thread or process) while being able to control and communicate with that unit of work. Example:

Lets define a simple_task that:

  • Expects some arguments

  • Does some work (sleep) until signaled to stop

  • return “done.” as final result

` >>> def simple_task(t): # will receive a Task instance as first argument ... assert t.args[0] == 'hello' ... assert t.kwargs['world'] == 'world' ... while not t.stopped(): ... time.sleep(0.1) ... return 'done.' `

Next, create a Task instance with simple_task as unit to work. Additionally specify arguments expected by our sleep_task:

` >>> t1 = Task(simple_task, 'hello', world='world') >>> >>> # start our task asynchronously >>> t1.start() >>> >>> # after 1 second signal our task to stop >>> time.sleep(1) >>> t1.stop() >>> >>> t1.done True >>> >>> t1.result 'done.' >>> >>> t1.exception == None True `

Lets create a new Task instance, this time skipping the expected arguments:

` >>> t2 = Task(simple_task) >>> >>> # start our task asynchronously >>> t2.start() >>> >>> t2.done True >>> >>> # No result found >>> t2.result == None True >>> >>> # our task raised an exception >>> t2.exception IndexError('tuple index out of range',) `

Communicating with Task

Task provide a communication queue over which external threads can send data to the executing unit of work. Example:

Lets define a sleep_task which will receive amount of time to sleep over the communication queue:

` >>> def sleep_task(t): ... secs = t.recv() # recv API, default blocks until we have some data ... time.sleep(int(secs)) ... >>> t3 = Task(sleep_task) >>> t3.start() >>> >>> # our task is waiting >>> t3.done False >>> >>> # send 1 sec sleep time >>> t3.send(1) >>> >>> # alright, done >>> t3.done True `

Controllers

Task and Celery

Metadata

Release files for task.py 0.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for task.py 0.3
File Size Uploaded
task.py-0.3.tar.gz 6.6 kB Details

Release files / task.py-0.3.tar.gz

Download URL task.py-0.3.tar.gz
Size 6.6 kB
Tags Source
SHA-256 checksum
How to use checksums
083ffba0026927e1e69e8a2d06d0c0f9f422509b41a4e81b70e577e37f83e3da
BLAKE2b-256 checksum
How to use checksums
71347b0e44501b10bb36e27b1bcd541e9f23d86c98fa1e00c3365fbb4681c3a8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.3 This release

1 release file

0.2

1 release file

0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page