Skip to main content

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:

  1. giving you a single /.manage.py runcluster command to fire up the development server for each project

  2. 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_manager

Create 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 admin

from 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.

Release files for django-microservices 0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-microservices 0.1
File Size Uploaded
django-microservices-0.1.tar.gz 3.8 kB Details

Release files / django-microservices-0.1.tar.gz

Download URL django-microservices-0.1.tar.gz
Size 3.8 kB
Tags Source
SHA-256 checksum
How to use checksums
82dd46b530bb45bcc6b983449203822325657ae2bfe1209f1b0166b01defebe8
BLAKE2b-256 checksum
How to use checksums
f7ab5fd564750568f0e106dfdf1edd53169a872b54d253fd0adff39e4fa4ea4c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.1 This release

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page