一个Django应用程序,用于执行Akamai清除请求
django-akamai的Python项目详细描述
依赖项:requests(必需),django-celery(可选)
django akamai是执行来自django应用程序的清除请求的一种方法 使用Akamai Rest API。清除请求是按需执行的,或者,可选地, 用芹菜排成队。
配置
此库使用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文件。
有关该api的完整信息,请参阅Akamai的文档:
直接发出清除请求
您可以从django_akamai.purge导入PurgeRequest,并为其提供 要失效或删除的一个或多个URL。
请注意,Akamai的API指定了请求数量的字节限制,以及 单个清除调用可能需要多个http请求才能完成。
TOdo:讨论限速选项
示例:
>>> 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定义了两个直接发出清除请求的信号 或者,当芹菜可用时,将请求排队
当从其他应用程序发送这些信号时,您可以传入各种信息 作为方便的发送者发件人可以是一个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)
或者,使用芹菜将请求排队:
>>> queue_purge_request.send(obj)
使用任务
若要直接使用任务,请从tasks.py导入PurgeRequestTask,然后:
>>> from akamai.tasks import PurgeRequestTask >>> obj = MyObject.objects.get(pk=3) >>> PurgeRequestTask.delay(obj)