Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/lander2k2/django-microservices
A framework for building microservices with Django
https://github.com/lander2k2/django-microservices
Last synced: about 2 months ago
JSON representation
A framework for building microservices with Django
- Host: GitHub
- URL: https://github.com/lander2k2/django-microservices
- Owner: lander2k2
- Created: 2015-04-25T01:05:06.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2015-06-30T06:38:46.000Z (over 9 years ago)
- Last Synced: 2024-09-23T14:17:38.738Z (4 months ago)
- Language: Python
- Homepage:
- Size: 428 KB
- Stars: 47
- Watchers: 3
- Forks: 11
- Open Issues: 2
-
Metadata Files:
- Readme: README.rst
Awesome Lists containing this project
- starred-awesome - django-microservices - A framework for building microservices with Django (Python)
README
====================
django-microservices
====================
Django-microservices helps you manage the development and interaction
of microservices built in Django.--------
Use Case
--------
You are using Django to build an application with a microservices architecture.
You have serveral services that communicate to each over HTTP and each service
is it's own Django project. You need to run ``./manage.py runserver [port]`` for
each service to bring it up and have the application function when developing.Django-microservices helps by:
#. giving you a single ``/.manage.py runcluster`` command to fire up the development
server for each project
#. providing a service discovery API that will allow your services to find one another------------
Requirements
------------
Django-------
Install
-------
Create a *new* virutual environment and django project alongside the django
projects that make up your micoservices application::
$ mkvirutalenv myapp_service_manager
$ pip install django django-microservices psycopg2 # for postgres database
$ django-admin startproject service_manager
$ cd service_managerCreate your service manager database::
$ createdb myapp_service_manager # if using postgres
Edit the settings in your new service manager project. Add ``microservices``
to the ``INSTALLED_APPS`` add the database settings::# service_manager/settings.py
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
...
'microservices',
)# for postgres database
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'myapp_service_manager',
'USER': 'db_user',
'PASSWORD': 'secret',
'HOST': 'localhost',
'PORT': '5432',
}
}
Create database tables::$ ./manage.py migrate
Create an admin user::
$ ./manage.py createsuperuser
Edit the root urls file to look like this::
# service_manager/urls.py
from django.conf.urls import include, url
from django.contrib import adminfrom microservices.admin import services_admin_site
urlpatterns = [
url(r'^', include('microservices.urls')),
url(r'^admin/', include(services_admin_site.urls)),
]-----
Usage
-----In your service manager project, run ``./manage.py runcluster`` then navigate
to ``http://127.0.0.1:8000``.The first time you do this, you won't see any services registerd. Click
on the "Admin" link, log in and register services by clicking on "Services"
in the Microservices admin. Click "Add service" to add each new service
in your app.Now at the index page of the service manager project you will see a list of
services with links to each.For any application that needs to find services in the cluster, add this to
the settings.py file::import requests
SERVICES = requests.get('http://127.0.0.1:8000/services/').json()
Then use ``settings.SERVICES[service_name]`` to get the correct IP for any service
in your application.