This project represents sample of asynchronous weather REST API that is build using **quart** (flask compatible API) python web microframework based on Asyncio
Project description
Async weather API
This project represents sample of asynchronous weather REST API that is build using quart (flask compatible API) python web microframework based on Asyncio.
Tools
Usage
Please run following script to obtain latest package from PYPI:
➜ pip install async-weather-api
Then please execute instructions below to launch game from your environment:
import weather
weather.run(key="your-secret-key", bind="0.0.0.0:5001", debug=False)
Running on https://0.0.0.0:5001 (CTRL + C to quit)
...
Note
key
stands for API key from https://openweathermap.org
Endpoints
- / - home page
➜ curl -X GET http://0.0.0.0:5001/ ➜ curl -X GET http://0.0.0.0:5001/index
Response: html page - /api/weather/{city}/{state}/{country} - current weather event
➜ curl -X GET http://0.0.0.0:5001/api/events/London/GB/GreatBritain
Response: json object{"city":"London","country":"GreatBritain","name":"Jeff the player","state":"GB"}
- /api/weather/{zip_code}/{country} - current weather in city
➜ curl -X GET http://0.0.0.0:5001/api/weather/97002/us
Response: json object{"base":"stations","clouds":{"all":90},"cod":200,"coord":{"lat":45.23,"lon":-122.8}, ...}
- /api/sun/{zip_code}/{country} - current sunset/sunrise in city
➜ curl -X GET http://0.0.0.0:5001/sun/weather/97002/us
Response: json object{"astronomical_twilight_begin":"04:03:49 PM","astronomical_twilight_end":"04:29:50 AM", ...}
Development notes
Run from source code
To be able to run source code please execute command below:
➜ python -m weather run --bind 0.0.0.0:5001 --mode prod --key your-secret-key
Running on https://0.0.0.0:5001 (CTRL + C to quit)
...
CI/CD
Project has Travis CI integration using .travis.yml file thus code analysis (black
, mypy
, pydocstyle
, pylint
, flake8
) and unittests (pytest
) will be run automatically
after every made change to the repository.
To be able to run code analysis, please execute command below:
➜ ./analyse-code.sh
Also test-report.html
will be generated after unittests execution.
Other than that, a fresh versioned package will be delivered on PYPI after new tag is created using pythonpublish.yml file.
Release notes
- 0.4.1
- Read requirements for PYPI build
- 0.4.0
- Introduce PYPI package
- 0.3.0
- Introduce asynchronous approach
- 0.2.0
- Introduce synchronous approach
- 0.1.0
- Distribute initial project version
Meta
Author – Volodymyr Yahello
Distributed under the MIT
license. See LICENSE for more information.
You can reach out me at:
- vyahello@gmail.com
- https://github.com/vyahello
- https://www.linkedin.com/in/volodymyr-yahello-821746127
Contributing
- clone the repository
- configure Git for the first time after cloning with your
name
andemail
pip install -r requirements.txt
to install all project dependenciespip install -r requirements-dev.txt
to install all development project dependencies
Project details
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
File details
Details for the file async-weather-api-0.4.2.tar.gz
.
File metadata
- Download URL: async-weather-api-0.4.2.tar.gz
- Upload date:
- Size: 7.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.8.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 70ab5c4238c2157dc5cc196285bc5af06ee6799173098bbfbdbd63cf45611692 |
|
MD5 | 348abce1a1f84401883237960c48f51c |
|
BLAKE2b-256 | 64e5ec3214a4031f0d0ffb9fb1442b57dda03e108eff8745cfc67866d19ddb46 |
File details
Details for the file async_weather_api-0.4.2-py3-none-any.whl
.
File metadata
- Download URL: async_weather_api-0.4.2-py3-none-any.whl
- Upload date:
- Size: 10.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.8.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2482eb16d0ec60e8ed206761bbd0453a1c3c463b4255f15d9a42f9f740d3b49e |
|
MD5 | fbae5acae74cbf452fc92356c67cd6d3 |
|
BLAKE2b-256 | e92a76857badb75a151d1fd0c050269efc9eed98df366be447a3b5f9a953c1d1 |