Simple Modular API written in Python.
Project description
Smapy
Simple Modular APIs written in Python.
- Free software: MIT license
- Documentation: https://smapy.github.io/smapy
Overview
Smapy is a framework built on top of Falcon and gunicorn, which allows building modular, distributed and asynchronous-capable service oriented Web APIs writing as little Python code as possible.
Installation
The simplest and recommended way to install Smapy is using pip
:
pip install smapy
Alternatively, clone the repository and install it from source running the make install
command.
git clone git@github.com:smapy/smapy.git
cd smapy
make install
For development, you can use the make install-develop
command instead in order to install all
the required dependencies for testing and code linting.
Getting Started
All you need to start a Smapy application is to execute the smapy
command line utility:
$ smapy
[2018-12-29 21:53:03 +0100] [25213] [INFO] Starting gunicorn 19.9.0
[2018-12-29 21:53:03 +0100] [25213] [INFO] Listening at: http://127.0.0.1:8001 (25213)
[2018-12-29 21:53:03 +0100] [25213] [INFO] Using worker: gevent
[2018-12-29 21:53:03 +0100] [25216] [INFO] Booting worker with pid: 25216
2018-12-29 21:53:03,304 - 25216 - INFO - None - application - Initializing the API
2018-12-29 21:53:03,307 - 25216 - INFO - None - api - Adding new runnable hello.World
2018-12-29 21:53:03,307 - 25216 - INFO - None - api - Adding new runnable misc.MultiProcess
2018-12-29 21:53:03,307 - 25216 - INFO - None - api - Adding new runnable misc.Report
2018-12-29 21:53:03,308 - 25216 - INFO - None - api - Adding new runnable misc.HelloWorld
After that, you can start playing with it through HTTP requests:
$ curl localhost:8001/hello
{
"elapsed": 0.08,
"host": "hostname",
"in_ts": "2018-05-06T20:37:48.671867",
"out_ts": "2018-05-06T20:37:48.671947",
"pid": 31789,
"results": null,
"session": null,
"status": "404 Not Found"
}
$ curl localhost:8001/hello_world
{
"elapsed": 12.044,
"host": "hostname",
"in_ts": "2018-05-06T20:37:58.759039",
"out_ts": "2018-05-06T20:37:58.771083",
"pid": 31789,
"results": null,
"session": "5aef67a6ab17857c2d81a6ea",
"status": "200 OK"
}
$ curl localhost:8001/hello_world?sync=True
{
"elapsed": 26.668,
"host": "hostname",
"in_ts": "2018-05-06T20:38:03.903315",
"out_ts": "2018-05-06T20:38:03.929983",
"pid": 31789,
"results": {
"hello": "world!",
"sync": "True"
},
"session": "5aef67abab17857c2d81a6ec",
"status": "200 OK"
}
$ curl localhost:8001/report?session=5aef67a6ab17857c2d81a6ea
{
"elapsed": 19.758,
"host": "hostname",
"in_ts": "2018-05-06T20:39:49.670267",
"out_ts": "2018-05-06T20:39:49.690025",
"pid": 31789,
"results": {
"actions": {
"OK": 1
},
"last_activity": "2018-05-06T20:37:58.812000",
"session": {
"_id": "5aef67a6ab17857c2d81a6ea",
"alive": false,
"body": {},
"elapsed": "0:00:00.058000",
"env": {
"HTTP_ACCEPT": "*/*",
"HTTP_HOST": "localhost:8001",
"HTTP_USER_AGENT": "curl/7.47.0",
"PATH_INFO": "/hello_world",
"QUERY_STRING": "",
"RAW_URI": "/hello_world",
"REMOTE_ADDR": "127.0.0.1",
"REMOTE_PORT": "50636",
"REQUEST_METHOD": "GET",
"SCRIPT_NAME": "",
"SERVER_NAME": "127.0.0.1",
"SERVER_PORT": "8001",
"SERVER_PROTOCOL": "HTTP/1.1",
"SERVER_SOFTWARE": "gunicorn/19.8.1"
},
"host": "hostname",
"in_ts": "2018-05-06T20:37:58.759000",
"out_ts": "2018-05-06T20:37:58.817000",
"params": {},
"pid": 31789,
"resource": "misc.HelloWorld",
"response": {
"hello": "world!"
},
"status": "OK",
"sync": false
},
"session_data": {
"links": 0,
"occurrences": 0,
"post": 0
}
},
"session": "5aef6815ab17857c2d81a6ef",
"status": "200 OK"
}
History
0.0.3
New release scripts.
0.0.2
- Add
smapy
CLI - Add default actions ands resources
- Import actions dynamically
- Update project structure
0.0.1
- First release on PyPI.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file smapy-0.0.3.tar.gz
.
File metadata
- Download URL: smapy-0.0.3.tar.gz
- Upload date:
- Size: 33.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.1.0 requests-toolbelt/0.9.1 tqdm/4.33.0 CPython/3.6.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1ffdb348381549ca99f60dcbae344233406771515d64a1800dcad2f9a1630921 |
|
MD5 | 17404337afd4493d9e0a49c9d5ed02c6 |
|
BLAKE2b-256 | 79e0b47c32a0b05447b0cd50995487dcc4f918bee38eb30d7fbf8f78e42d6593 |
File details
Details for the file smapy-0.0.3-py2.py3-none-any.whl
.
File metadata
- Download URL: smapy-0.0.3-py2.py3-none-any.whl
- Upload date:
- Size: 18.4 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.1.0 requests-toolbelt/0.9.1 tqdm/4.33.0 CPython/3.6.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 51e336cc7a77d2ce9da415c0bc9bae2c46ced60d86472b7519800798c7532605 |
|
MD5 | 758215b30dc7a60ba202db10f2ffeb43 |
|
BLAKE2b-256 | a1adf2254a94ae7454d55dc8d466f41a0e10afc29aa29ff07d09100e1b51bfef |