Skip to main content

Facebook-like implementation of batch requests

Project description

DRF batch requests
=====================


[![PyPI version](https://badge.fury.io/py/drf-batch-requests.svg)](https://badge.fury.io/py/drf-batch-requests)
[![Travis CI](https://travis-ci.org/roman-karpovich/drf-batch-requests.svg?branch=master)](https://travis-ci.org/roman-karpovich/drf-batch-requests)
[![Coverage Status](https://coveralls.io/repos/github/roman-karpovich/drf-batch-requests/badge.svg?branch=master)](https://coveralls.io/github/roman-karpovich/drf-batch-requests?branch=master)
[![Code Health](https://landscape.io/github/roman-karpovich/drf-batch-requests/master/landscape.svg?style=flat)](https://landscape.io/github/roman-karpovich/drf-batch-requests/master)
[![Python Versions](https://img.shields.io/pypi/pyversions/drf-batch-requests.svg?style=flat-square)](https://pypi.python.org/pypi/drf-batch-requests)
[![Implementation](https://img.shields.io/pypi/implementation/drf-batch-requests.svg?style=flat-square)](https://pypi.python.org/pypi/drf-batch-requests)

Quick start
-----------


examples:
```
curl -X POST \
http://127.0.0.1:8000/batch/ \
-H 'cache-control: no-cache' \
-H 'content-type: application/json' \
-d '{"batch": [
{
"method": "get",
"relative_url": "/test/",
"name": "yolo"
},
{
"method": "post",
"relative_url": "/test/?id={result=yolo:$.id}&ids={result=yolo:$.data.*.id}",
"body": {"data": {"id": "{result=yolo:$.id}", "ids": "{result=yolo:$.data.*.id}"}, "test": "yolo"}
},
{
"method": "post",
"relative_url": "/test/",
"body": "{\"data\": 42}",
"omit_response_on_success": true
},
{
"method": "options",
"relative_url": "/test/"
}
]
}'
```

using file uploading
```
curl -X POST \
http://127.0.0.1:8000/batch/ \
-H 'cache-control: no-cache' \
-H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
-F 'batch=[
{
"method": "get",
"relative_url": "/test/",
"name": "yolo"
},
{
"method": "post",
"relative_url": "/test/?id={result=yolo:$.id}&ids={result=yolo:$.data.*.id}",
"body": {"data": "{result=yolo:$.data.*.id}", "test": "yolo"},
"attached_files":{"file": "a.jpg"}
},
{
"method": "post",
"relative_url": "/test/",
"body": "{\"data\": 42}",
"omit_response_on_success": true,
"attached_files":["a.jpg", "b.png"]
},
{
"method": "options",
"relative_url": "/test/"
}
]' \
-F b.png=@2476.png \
-F a.jpg=@check_133.pdf
```


Future features:

- add support for requests pipelining. use responses as arguments to next requests (done)
- build graph based on requests dependencies & run simultaneously independent.
- ~~switchable atomic support. true - all fails if something wrong. else - fail only dependent (can be very hard to support on front-end side, but for now seems as good feature)~~ run all requests in single transaction. (done)
- ~~use native django. we don't use complicated things that require drf for work. all can be done with "naked" django.~~ (since we validate requests with drf serializers, it's better to leave as it is).
- support files uploading (done)



Dependencies:

- Django starting from 1.9
- Django rest framework (3.6 for 1.9 django)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

drf-batch-requests-0.8.6.tar.gz (18.7 kB view details)

Uploaded Source

Built Distribution

drf_batch_requests-0.8.6-py3-none-any.whl (31.3 kB view details)

Uploaded Python 3

File details

Details for the file drf-batch-requests-0.8.6.tar.gz.

File metadata

File hashes

Hashes for drf-batch-requests-0.8.6.tar.gz
Algorithm Hash digest
SHA256 acc090de2f39b989deb717e29020378590e100d611cf90fb7a4f71b6d1c0fede
MD5 a5a8d6a04de0c1648384f692f80fa9c8
BLAKE2b-256 27f19b59b45aa935d69a3e4f5d631617ef77bea40b1fe475ed3bc1a98c2af5fb

See more details on using hashes here.

File details

Details for the file drf_batch_requests-0.8.6-py3-none-any.whl.

File metadata

File hashes

Hashes for drf_batch_requests-0.8.6-py3-none-any.whl
Algorithm Hash digest
SHA256 9e6dcaac33237f82fb15c0cb2250ac614a589d4d27ec93d5eae85cc5d6308d61
MD5 06ed2ab89803857db9b606cad6383ad8
BLAKE2b-256 4697ea618dbb99c12400fa6f22d3ae1a821c3163b193d1eea35f794cd854d1fb

See more details on using hashes here.

Supported by

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