69 lines
2.0 KiB
Markdown
69 lines
2.0 KiB
Markdown
# 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](http://docs.python-guide.org/en/latest/dev/virtualenvs/) 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. Note that this requires rebuild to reflect any code changes.
|
|
```
|
|
$ docker-compose up --force-recreate --build -d
|
|
```
|
|
|
|
## Documentation
|
|
|
|
Documentation is available [here](docs)
|
|
|
|
## 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:
|
|
```sh
|
|
$ 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
|
|
```
|
|
.
|
|
.
|