跳转到主要内容

一个用于执行Akamai清除请求的Django应用

项目描述

依赖项:requests(必需),django-celery(可选)

django-akamai作为使用Akamai REST API从Django应用执行清除请求的手段。清除请求可按需执行,或者可选地使用Celery将其放入队列。

配置

此库使用edgegrid-python客户端进行身份验证。如果~/.edgerc配置文件包含一个CCU部分,则将自动使用这些凭据。

要指定不同的edgerc文件位置,您可以使用以下Django设置

AKAMAI_EDGERC_FILENAME
AKAMAI_EDGERC_CCU_SECTION

如果您希望将值保留在Django设置中,您可以直接指定它们

AKAMAI_CCU_CLIENT_SECRET AKAMAI_CCU_HOST AKAMAI_CCU_ACCESS_TOKEN AKAMAI_CCU_CLIENT_TOKEN

为了简单和安全,建议使用.edgerc文件。

请参阅Akamai的文档以获取有关API的完整信息

https://developer.akamai.com/api/purge/ccu/overview.html

直接发出清除请求

您可以从django_akamai.purge导入PurgeRequest并提供一个或多个要使无效或删除的URL。

注意,Akamai的API指定了请求数量的字节限制,单个清除调用可能需要多个HTTP请求才能完成。

待办事项:讨论速率限制的选项

示例

>>> 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
[]

使用Django信号

django_akamai.signals 定义了两个信号,用于直接发起清除请求,或者当Celery可用时,将请求排队。

当从其他应用程序发送这些信号时,您可以方便地传递各种东西作为发送者。发送者可以是单个URL字符串、URL字符串列表、单个Django对象或QuerySet。如果传递对象或QuerySet,则必须在每个对象上定义 get_absolute_url()

立即执行请求的信号示例

>>> 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)

或者,使用Celery排队请求

>>> queue_purge_request.send(obj)

使用任务

要直接使用任务,从 tasks.py 导入 PurgeRequestTask 如下所示

>>> from akamai.tasks import PurgeRequestTask
>>> obj = MyObject.objects.get(pk=3)
>>> PurgeRequestTask.delay(obj)

由以下提供支持