Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/umermansoor/microservices
Example of Microservices written using Flask.
https://github.com/umermansoor/microservices
Last synced: 7 days ago
JSON representation
Example of Microservices written using Flask.
- Host: GitHub
- URL: https://github.com/umermansoor/microservices
- Owner: umermansoor
- Created: 2015-11-30T22:50:15.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2024-08-14T14:25:03.000Z (4 months ago)
- Last Synced: 2024-12-13T00:04:40.910Z (14 days ago)
- Language: Python
- Size: 24.4 KB
- Stars: 1,114
- Watchers: 56
- Forks: 247
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Cinema 3 - (Extremely Simplified) Example of Microservices in Python
Overview
========Cinema 3 is an example project which demonstrates the use of microservices for a fictional movie theater.
The Cinema 3 backend is powered by 4 microservices, all of which happen to be written in Python using
Flask. For more information, you can refer to the blog post here: https://codeahoy.com/2016/07/10/writing-microservices-in-python-using-flask/* Movie Service: Provides information like movie ratings, title, etc.
* Show Times Service: Provides show times information.
* Booking Service: Provides booking information.
* Users Service: Provides movie suggestions for users by communicating with other services.Requirements
===========* Python 2.7
* Works on Linux, Windows, Mac OSX and (quite possibly) BSD.Install
=======The quick way is use the provided `make` file.
$ make installStarting and Stopping Services
==============================To launch the services:
$ make launchTo stop the services:
$ make shutdownAPIs and Documentation
======================## Movie Service (port 5001)
This service is used to get information about a movie. It provides the movie title, rating on a 1-10 scale,
director and other information.To lookup all movies in the database, hit: `http://127.0.0.1:5001/movies`
GET /movies
Returns a list of all movies.
{
"267eedb8-0f5d-42d5-8f43-72426b9fb3e6": {
"director": "Ryan Coogler",
"id": "267eedb8-0f5d-42d5-8f43-72426b9fb3e6",
"rating": 8.8,
"title": "Creed"
},
...... output truncated ......To lookup a movie by its `id`:
GET /movies/7daf7208-be4d-4944-a3ae-c1c2f516f3e6
Returns the specified movie.
{
"director": "Paul McGuigan",
"id": "7daf7208-be4d-4944-a3ae-c1c2f516f3e6",
"rating": 6.4,
"title": "Victor Frankenstein",
"uri": "/movies/7daf7208-be4d-4944-a3ae-c1c2f516f3e6"
}
## Showtimes Service (port 5002)This service is used get a list of movies playing on a certain date.
To lookup all showtimes, hit: `http://127.0.0.1:5002/showtimes`
GET /showtimes
Returns a list of all showtimes by date.
{
"20151130": [
"720d006c-3a57-4b6a-b18f-9b713b073f3c",
"a8034f44-aee4-44cf-b32c-74cf452aaaae",
"39ab85e5-5e8e-4dc5-afea-65dc368bd7ab"
],
...... output truncated ......To get movies playing on a certain date:
GET /showtimes/20151201
Returns all movies playing on the date.[
"267eedb8-0f5d-42d5-8f43-72426b9fb3e6",
"7daf7208-be4d-4944-a3ae-c1c2f516f3e6",
"39ab85e5-5e8e-4dc5-afea-65dc368bd7ab",
"a8034f44-aee4-44cf-b32c-74cf452aaaae"
]## Booking Service (port 5003)
Used to lookup booking information for users.
To get all bookings by all users in the system, hit: `http://127.0.0.1:5003/bookings`
GET /bookings
Returns a list of booking information for all bookings in the database.
{
"chris_rivers": {
"20151201": [
"267eedb8-0f5d-42d5-8f43-72426b9fb3e6"
]
},
...... output truncated ......
To lookup booking information for a user:GET /bookings/dwight_schrute
{
"20151201": [
"7daf7208-be4d-4944-a3ae-c1c2f516f3e6",
"267eedb8-0f5d-42d5-8f43-72426b9fb3e6"
],
"20151205": [
"a8034f44-aee4-44cf-b32c-74cf452aaaae",
"276c79ec-a26a-40a6-b3d3-fb242a5947b6"
]
}## User Service (port 5000)
This service returns information about the users of Cinema 3 and also provides movie suggestions to the
users. It communicates with other services to retrieve booking or movie information.To get a list of all the users in the system, hit: `http://127.0.0.1:5000/users`
GET /users
Returns a list of all users in the database.
{
"chris_rivers": {
"id": "chris_rivers",
"last_active": 1360031010,
"name": "Chris Rivers"
},
...... output truncated ......To lookup information about a user:
GET /users/michael_scott
{
"id": "michael_scott",
"last_active": 1360031625,
"name": "Michael Scott"
}
To get suggested movies for a user:GET /users/michael_scott/suggested