
Security News
New CVE Forecasting Tool Predicts 47,000 Disclosures in 2025
CVEForecast.org uses machine learning to project a record-breaking surge in vulnerability disclosures in 2025.
Parallel file downloader for HTTP/HTTPS, FTP and SFTP protocols, built using Python.
pip install pymatris
from pymatris import Downloader
dl = Downloader()
dl.enqueue_file("https://storage.data.gov.my/pricecatcher/pricecatcher_2022-01.parquet", path="./")
dl.download()
result = dl.download()
Under the hood, pymatris.Downloader
uses a global queue to manage the download tasks. pymatris.Downloader.enqueue_file()
will add url to download queue, and pymatris.Downloder.download()
will download the files in parallel. Pymatris uses asyncio to download files in parallel, with asychronous I/O operations using aiofiles, hence enabling faster downloads.
pymatris.Downloader.download()
returns a Results
object, which is a list of the filenames that have been downloaded. Results
object has two attributes, success
and errors
.
success
is a list of named tuples, where each named tuple contains .path
the filepath and .url
the url.
errors
is a list of named tuples, where each named tuple contains .filepath_partial
the intended filepath, .url
the url, .exception
an Exception or aiohttp.ClientResponse that occurred during download.
from main.py
from pymatris import Downloader
urls = [
"https://storage.data.gov.my/pricecatcher/pricecatcher_2022-01.parquet",
"ftp://bob:bob@192.168.1.6:20/tesfile.txt",
"https://storage.data.gov.my/pricecatcher/pricecatcher_2022-01.parquet",
]
dm = Downloader()
for url in urls:
dm.enqueue_file(url, path="./")
results = dm.download()
print(results)
>> Success:
>> pricecatcher_2022-01.csv https://storage.data.gov.my/pricecatcher/pricecatcher_2022-01.csv
>> pricecatcher_2022-01.parquet https://storage.data.gov.my/pricecatcher/pricecatcher_2022-01.parquet
>> Errors:
>> (ftp://bob:bob@192.168.1.6:20/tesfile.txt,
>> ConnectionRefusedError(61, "Connect call failed ('192.168.1.6', 20)"))
Visit main.py for advanced usage.
Pymatris also provides a command line interface to download files in parallel. In your terminal, run the following command to download files in parallel.
# Insert single url as argument
pymatris https://storage.data.gov.my/pricecatcher/pricecatcher_2022-01.parquet
# Or multiple urls
pymatris https://storage.data.gov.my/pricecatcher/pricecatcher_2022-01.parquet https://storage.data.gov.my/pricecatcher/pricecatcher_2022-02.parquet https://storage.data.gov.my/pricecatcher/pricecatcher_2022-03.parquet
$ pymatris --help
usage: pymatris [-h] [--max-parallel MAX_PARALLEL] [--max-splits MAX_SPLITS]
[--overwrite] [--quiet] [--dir DIR] [--show-errors SHOW_ERRORS]
[--timeouts TIMEOUTS] [--max-tries MAX_TRIES]
URLS [URLS ...]
To provide path to save files, use --dir option. By default files will be saved in current directory.
pymatris --dir "./" <urls>
To overwrite existing files, use --overwrite option. By default, files will not be overwritten.
pymatris --overwrite <urls>
Assuming your have "pricecatcher_2022-01.parquet" file in your current directory, running above command will overwrite the existing file. During download, Pymatris creates tempfile to download files, if download is interrupted, rest assured that your existing files are safe, and tempfiles will be deleted.
To configure number of parallel downloads, use --max-parallel option. By default, 5 parallel downloads are allowed.
pymatris --max-parallel 10 <urls>
Pymatris uses asyncio to download files in parallel. By default, 5 files are downloaded in parallel. You can increase or decrease the number of parallel downloads.
To configure number of parallel download parts per file, use --max-splits option. By default, 5 parts are downloaded in parallel for each file.
pymatris --max-splits 10 <urls>
This is only available for HTTP/HTTPS and SFTP protocols. Currently, FTP protocol does not support multipart downloads.
To configure number of retries for failed downloads, use --max-tries option. By default, 5 retries are allowed.
pymatris --max-tries 10 <urls>
To hide progress bar, use --quiet option. By default, progress bar is shown.
pymatris --quiet <urls>
FAQs
Parallel download manager for HTTP/HTTPS/FTP/SFTP protocols.
We found that pymatris demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
CVEForecast.org uses machine learning to project a record-breaking surge in vulnerability disclosures in 2025.
Security News
Browserslist-rs now uses static data to reduce binary size by over 1MB, improving memory use and performance for Rust-based frontend tools.
Research
Security News
Eight new malicious Firefox extensions impersonate games, steal OAuth tokens, hijack sessions, and exploit browser permissions to spy on users.