一个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的文档:

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

直接发出清除请求

您可以从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)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使用Eclipse Helios for Web项目   java指定行。作为编译器设置的分隔符?   osm映射中带有osmdroid的java标记   java Android ClassNotFoundException在路径:DexPathList上未找到类   java从j2me调用GWT方法   更新到java 8后的aspectj问题   如何仅从根元素java,com提取文本内容。滴虫软件。是的。html   安卓公司。谷歌。火基。数据库DatabaseException:未能转换java类型的值。将字符串改为长字符串   从java中的方法返回arraylist变量   java如果将引用重新分配给同步块内的锁对象,会是什么?   java下载。使用spring mvc的资源文件中的xlsx文件   java Eclipse提供了什么工具来运行Eclipse中未包含的程序?   spring boot Java泛型如何读取传递给泛型方法的类型上的字段或调用方法   Javacard中的javaecdsa签名