https://github.com/abdullahselek/reducepy
URL shortener service using Tornado and Redis runs on Docker and Kubernetes.
https://github.com/abdullahselek/reducepy
docker kubernetes microservice python redis tornado url-shortener
Last synced: 12 months ago
JSON representation
URL shortener service using Tornado and Redis runs on Docker and Kubernetes.
- Host: GitHub
- URL: https://github.com/abdullahselek/reducepy
- Owner: abdullahselek
- License: mit
- Created: 2017-11-28T17:58:04.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2022-04-03T19:39:46.000Z (almost 4 years ago)
- Last Synced: 2025-03-25T03:34:58.385Z (12 months ago)
- Topics: docker, kubernetes, microservice, python, redis, tornado, url-shortener
- Language: Python
- Homepage:
- Size: 79.1 KB
- Stars: 33
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.rst
- License: LICENSE
Awesome Lists containing this project
README
========
ReducePy
========
.. image:: https://github.com/abdullahselek/ReducePy/workflows/ReducePy%20CI/badge.svg
:target: https://github.com/abdullahselek/ReducePy/actions
.. image:: https://codecov.io/gh/abdullahselek/ReducePy/branch/master/graph/badge.svg
:target: https://codecov.io/gh/abdullahselek/ReducePy
:alt: Codecov
============
Introduction
============
Url shortener service using `Tornado` and `Redis` runs on `Docker` and `Kubernetes`.
================
Getting the code
================
The code is hosted at https://github.com/abdullahselek/ReducePy
Check out the latest development version anonymously with::
$ git clone git://github.com/abdullahselek/ReducePy.git
$ cd ReducePy
To install dependencies, run either::
$ pip install -Ur requirements.testing.txt
$ pip install -Ur requirements.txt
To install the minimal dependencies for production use run::
$ pip install -Ur requirements.txt
========================
Downloading Docker Image
========================
You can download docker image with::
docker pull abdullahselek/reducepy
and the docker page for the image https://hub.docker.com/r/abdullahselek/reducepy/.
=============
Running Tests
=============
The test suite can be run against a single Python version which requires ``pip install pytest`` and optionally ``pip install pytest-cov`` (these are included if you have installed dependencies from ``requirements.testing.txt``)
To run the unit tests with a single Python version::
$ py.test -v
to also run code coverage::
$ py.test -v --cov-report xml --cov=reducepy
To run the unit tests against a set of Python versions::
$ tox
========
Commands
========
---
Run
---
Running up in Docker
.. code::
docker-compose up
Running in Kubernetes
- For testing you can run **reducepy** in **Kubernetes** with using **Docker**. Run docker and then the following
commands should work for you.
.. code::
# Use Docker for minikube
eval $(minikube docker-env)
# Create developments and pods
kubectl create -f deployment-redis.yml
kubectl create -f deployment-reducepy.yml
# Create services
kubectl create -f service-redis.yml
kubectl create -f service-reducepy.yml
# Get url for **reducepy**
minikube service reducepy --url
------------
Sample Usage
------------
.. code::
# Shorten url with POST
curl -i http://127.0.0.1 -F "url=https://github.com"
# Response
{
"error": false,
"shortened_url": "http://127.0.0.1/YjUwYQ"
}
# Redirect to original url
http://127.0.0.1/YjUwYQ
# Error case with invalid url
curl -i http://127.0.0.1 -F "url=github"
# Response
{
"error": true,
"message": "Please post a valid url"
}
# Error case with null url
curl -i http://127.0.0.1 -F "url="
# Response
{
"error": true,
"message": "Please post a url"
}