Async task queue for Python
Project description
atq is a pure-Python asynchronous task queue built to work with asyncio. It is designed to run costly functions outside main event loop using distributed workers.
atq requires Python 3.5+ and is distributed under BSD license.
Usage
First, you should start workers on the servers you plan to use for task execution
atqserver --host <hostname> --port <port-number> --worker <num-workers>
where
<hostname> is a hostname of the server
<port-number> is a port that server will listen on
<num-workers> is a number of worker processes
Please note that code of tasks should be accessible by atq, so it’s advised to run atq server from your project root directory in more complex situations.
Then you will need to create a client using hostnames and ports of initialized servers:
import atq
q = atq.Q([
("localhost", 12345),
])
Finally you can use atq in your code:
import atq
import asyncio
import requests
from collections import ChainMap
from collections import Counter
URLS = [
...
]
q = atq.Q([
("localhost", 12345),
])
def top_words(url, n):
"""Returns top n words from text specified by url."""
text = requests.get(url).text.split()
return {url: Counter(text).most_common(n)}
async def get_top_words(urls, n):
"""Returns top n words in documents specified by URLs."""
tops_in_url = await asyncio.gather(
*[q.q(top_words, url, n) for url in urls])
return ChainMap(*tops_in_url)
top = asyncio.get_event_loop().run_until_complete(get_top_words(URLS, 10))
You can find more examples in examples subdirectory.
Installation
pip3 install atq
Testing
python3 setup.py test
License
BSD
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 Distributions
Built Distribution
File details
Details for the file atq-0.0.2-py3-none-any.whl
.
File metadata
- Download URL: atq-0.0.2-py3-none-any.whl
- Upload date:
- Size: 8.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 95922b23b5f62d4f35568f033890e37d714f1e94eecd77c28c7fd4ba8bab8d85 |
|
MD5 | 9eba691f8a324b52e9ca9fb33e99c97e |
|
BLAKE2b-256 | 6301334c22ec318b5769066af1872efcc1b854fc4b626300a03ec43b1def61d7 |