Generic worker that performs concurrent tasks using coroutine.
Project description
coworker
Generic worker that performs concurrent tasks using coroutine.
Quick Start Tutorial
Define how a task is performed and create the worker:
from coworker import Coworker
class SquareWorker(Coworker):
async def do_task(self, task):
return task * task
worker = SquareWorker(max_concurrency=5) # Only 5 tasks will run concurrently
# As do_task is fast, 35,000 tasks can be done in 1 second.
To run in the background forever and add tasks:
import asyncio
async def background_worker_example():
# Start worker / Run in background
asyncio.ensure_future(worker.start())
# Mulitiple tasks
tasks = list(range(100))
results = await asyncio.gather(*worker.add_tasks(tasks))
print(results) # results = [0, 1, 4, 9, ...]
# Single task
result = await worker.add_tasks(2)
print(result) # result = 4
# Stop worker
await worker.stop()
# Run async usage example
asyncio.get_event_loop().run_until_complete(background_worker_example())
To run for a list of tasks and stop worker when finished:
task_futures = asyncio.get_event_loop().run_until_complete(worker.start([1, 2, 3]))
print([t.result() for t in task_futures]) # [1, 4, 9]
Links & Contact Info
Documentation: http://coworker.readthedocs.org
PyPI Package: https://pypi.python.org/pypi/coworker
GitHub Source: https://github.com/maxzheng/coworker
Report Issues/Bugs: https://github.com/maxzheng/coworker/issues
Connect: https://www.linkedin.com/in/maxzheng
Contact: maxzheng.os @t gmail.com
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
coworker-1.0.1.tar.gz
(13.1 kB
view hashes)