Skip to main content
2025 Python Packaging Survey is now live!  Take the survey now

asyncio REST API Resource database

Project description

Introduction

https://img.shields.io/badge/docs-latest-brightgreen.svg?style=flat https://travis-ci.org/plone/guillotina.svg?branch=master Test Coverage Python Versions https://img.shields.io/pypi/v/guillotina.svg License Chat

Please read the detailed docs

This is the working project of the next generation Guillotina server based on asyncio.

Dependencies

  • Python >= 3.7

  • PostgreSQL >= 9.6

Quickstart

We use pip

pip install guillotina

Run PostgreSQL

If you don’t have a PostgreSQL server to play with, you can run one with Docker.

Download and start the Docker container by running

make run-postgres

Run the server

To run the server

g

Then…

curl http://localhost:8080

Or, better yet, use Postman to start playing with API.

You can also navigate in your Guillotina server with its built-in web admin interface by visiting http://localhost:8080/+admin/.

Deploy on Heroku

Read more Guillotina-Heroku.

https://www.herokucdn.com/deploy/button.svg

Getting started with development

Using pip (requires Python > 3.7)

git clone git@github.com:plone/guillotina.git
cd guillotina
python3.7 -m venv .
./bin/pip install -r requirements.txt
./bin/pip install -r contrib-requirements.txt
./bin/pip install -e .[test]
./bin/pre-commit install

Run tests

We’re using pytest

./bin/pytest guillotina

and for test coverage

./bin/pytest --cov=guillotina guillotina/

With file watcher…

./bin/ptw guillotina --runner=./bin/py.test

To run tests with cockroach db

USE_COCKROACH=true ./bin/pytest guillotina

Default

Default root access can be done with AUTHORIZATION header : Basic root:root

Docker

You can also run Guillotina with Docker!

First, run PostgreSQL

docker run --rm \
    -e POSTGRES_DB=guillotina \
    -e POSTGRES_USER=guillotina \
    -p 127.0.0.1:5432:5432 \
    --name postgres \
    postgres:9.6

Then, run Guillotina

docker run --rm -it \
    --link=postgres -p 127.0.0.1:8080:8080 \
    guillotina/guillotina:latest \
    g -c '{"databases": [{"db": {"storage": "postgresql", "dsn": "postgres://guillotina:@postgres/guillotina"}}], "root_user": {"password": "root"}}'

This assumes you have a config.yaml in your current working directory

Chat

Join us to talk about Guillotina at https://gitter.im/plone/guillotina

CHANGELOG

6.0.0a1 (2019-12-09)

  • Move tags to a context property to make it indexable on json [bloodbare]

  • Added async property Request.body_exists [masipcat]

  • Fixed fixture ‘guillotina’ [masipcat]

  • Make sure that guillotina uses uvloop on starting if its installed [bloodbare]

  • Make sure uvicorn uses the same loop as guillotina startup [bloodbare]

  • Fix tests in ‘test_cache_txn.py’ and ‘test_setup.py’ being skipped [masipcat]

  • Replaced aiohttp with ASGI (running with uvicorn by default) [dmanchon,masipcat,vangheem]

5.1.22 (2019-12-02)

  • Fix security bug in @move and @duplicate [lferran]

5.1.21 (2019-11-29)

  • Allow to iterate keys, values and items of a BucketDictValue [lferran]

5.1.20 (2019-11-27)

  • Fix security bug: anonymous users were being granted guillotina.Authenticated [lferran]

5.1.19 (2019-11-19)

  • Update default zope.interface to 4.7.1 [bloodbare]

  • Be able to provide DEBUG_SUBSCRIBERS env variable to get details about event timings being run. [vangheem]

5.1.18 (2019-11-25)

  • Make sure to reset registry task var when setting up new container [vangheem]

5.1.17 (2019-11-22)

  • Fix potential deadlock issues when storage read conn handling [vangheem]

5.1.16 (2019-11-21)

  • Allow uid as destination in @duplicate and @move [qiwn]

5.1.15 (2019-11-20)

  • Fix correctly saving patch field [vangheem]

5.1.14 (2019-11-20)

  • Fix patch field validation [vangheem]

5.1.13 (2019-11-13)

  • Prevent JSONField name clash with field validator decorator [vangheem]

5.1.12 (2019-11-12)

  • Remove task call back to run execute_futures automatically. aiohttp reuses task object for keepalive implementation and the _callbacks were never run [vangheem]

5.1.11 (2019-11-12)

  • Lazy create thread pool executor so we can properly use thread pool setting [vangheem]

5.1.10 (2019-11-12)

  • Be able to customize number of thread pool workers [vangheem]

5.1.9 (2019-11-12)

  • Add custom settings into test server [qiwn]

5.1.8 (2019-11-11)

  • bump

5.1.7 (2019-11-11)

  • Make sure to use txn.lock when using pg connection [vangheem]

5.1.6 (2019-11-08)

  • reduce the load dbvacuum can cause [vangheem]

5.1.6 (unreleased)

  • Fix required param not specified in service parameters configuration [vangheem]

5.1.5 (2019-11-06)

  • Fix test util: add db in task vars too [lferran] [lferran]

  • Added “pickle_protocol” to app_settings [masipcat]

You are seeing a truncated changelog.

You can read the changelog file for a complete list.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page