Files
api2/README.md
T
2021-10-18 16:42:07 +02:00

2.0 KiB

Photowall API 2

Provides a REST API to Photowall database.

Installation

Make sure that your system has Python version 3.6 installed.

Next its recommended that you create a virtualenv of python 3.6 and install all packages in it. To do that execute the following commands in your project folder:

$ virtualenv -p /usr/bin/python3.6 venv
$ source venv/bin/activate
$ pip install -r requirements.txt

Local testing with docker

Make sure you edit docker-compose.yml with correct environment variables. This will launch the production image and listen on port 1881.

$ docker-compose  up --force-recreate --build -d

Documentation

Documentation is available here

Configuration

First copy config.sample.py to config.py. This file will be read by the application on startup.

List of available configuration options:

Name Description
SQLALCHEMY_DATABASE_URI Database connection string. e.g: postgresql://user:password@localhost/photowall
DEBUG Enable/disable debug mode
API_KEYS A list of api keys that are used to authenticate to the API. If this list is empty authentication will be disabled.
BERNARD_QUEUE_URL URL to Bernard queue (used for running Photowall background tasks)

Getting started

Starting the application:

$ python manage.py runserver

Release and development process

New branches are cut from master and when it is ready for test and code review a pull-request is created and the branch is deployed to the staging environment after checking that the staging environment is free to deploy to. A deploy to the staging environment is done using fab:

$ fab staging deploy

The staging branch is automatically synced from master on new commits to master.

Testing

To run unit tests:

$ python -m unittest

Performance testing with Locust

Run locally

$ pip install locust
$ USERNAME=user locust --host=http://localhost:1881

.