django-akamai
Dependencies: requests (required), django-celery (optional)
django-akamai serves as a means to perform purge requests from Django apps using the Akamai REST API. Purge requests are performed on demand or, optionally, placed in a queue using Celery.
Configuration
This library uses the edgegrid-python client for authentication. If the ~/.edgerc config file contains a CCU section those credentials will be used automatically.
To specify a different location for the edgerc file, you may use these Django settings:
AKAMAI_EDGERC_FILENAME AKAMAI_EDGERC_CCU_SECTION
If you prefer to keep the values in your Django settings you may specify them directly:
AKAMAI_CCU_CLIENT_SECRET AKAMAI_CCU_HOST AKAMAI_CCU_ACCESS_TOKEN AKAMAI_CCU_CLIENT_TOKEN
For simplicity and security use of the .edgerc file is recommended.
Consult Akamai’s documentation for full information about the API:
Directly issuing purge requests
You may import PurgeRequest from django_akamai.purge and provide it with one or more URLs to invalidate or delete.
Note that Akamai’s API specifies a byte limit on the number of requests and a single purge call may require multiple HTTP requests to complete.
TODO: discuss options for rate-limiting
Example:
>>> pr = PurgeRequest()
>>> pr.add("http://www.example.com/url-1.html")
>>> pr.add(u"http://www.example.com/url-2.html")
>>> for url_batch, response in pr.purge():
print(resp.status_code, len(url_batch))
201 2
>>> print pr.urls
[]
Using Django Signals
django_akamai.signals defines two signals to directly issue a purge request or, when Celery is available, queue the request.
When sending these signals from other apps, you can pass in a variety of things as the sender for convenience. Sender can be a single URL string, a list of URL strings, an individual Django object, or a QuerySet. If passing in an object or QuerySet, then get_absolute_url() must be defined on every object.
Example of signalling to immediately perform the request:
>>> from django_akamai.signals import purge_request, queue_purge_request >>> obj = MyObject.objects.get(pk=3) >>> obj.get_absolute_url() u'http://www.example.com/blahblah.html' >>> purge_request.send(obj)
Or, to queue the request using Celery:
>>> queue_purge_request.send(obj)
Using Tasks
To use the task directly, import PurgeRequestTask from tasks.py thusly:
>>> from akamai.tasks import PurgeRequestTask >>> obj = MyObject.objects.get(pk=3) >>> PurgeRequestTask.delay(obj)
Metadata
Release files for django-akamai 2.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| django-akamai-2.0.0.tar.gz | 6.7 kB | Without provenance | Details for django-akamai-2.0.0.tar.gz |
Release files / django-akamai-2.0.0.tar.gz
| Download URL | django-akamai-2.0.0.tar.gz |
|---|---|
| Size | 6.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2cdd4e0bc6051d7996ef58d0a175f92e1645e60c4005ae95b82dc4f2707c3761
|
|
BLAKE2b-256 checksum How to use checksums |
4d0ca3615338ac4727e0fef70bbb4538599ec77677ca6c616744390686355b85
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Security for django-akamai 2.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.