Respect Cloudflare's per request purge limit

This commit is contained in:
Quantum 2021-06-08 05:44:06 -04:00
parent 20606f2af2
commit 4092fd54b5
2 changed files with 20 additions and 11 deletions

View file

@ -4,6 +4,10 @@ import sys
import requests
import six
from purge_static.utils import chunk
CLOUDFLARE_MAX_PURGE = 30
class CloudFlareCDN(object):
def __init__(self, args):
@ -31,15 +35,14 @@ class CloudFlareCDN(object):
sys.exit('No zone for CloudFlare, use --zone.')
def purge(self, urls):
for group in chunk(urls, CLOUDFLARE_MAX_PURGE):
resp = requests.post(
'https://api.cloudflare.com/client/v4/zones/%s/purge_cache' % (self.zone,),
json={'files': urls}, headers={
json={'files': group}, headers={
'X-Auth-Email': self.email,
'X-Auth-Key': self.api_key,
}
).json()
if resp.get('success'):
return
if not resp.get('success'):
sys.exit(resp)

6
purge_static/utils.py Normal file
View file

@ -0,0 +1,6 @@
from itertools import islice
def chunk(it, size):
it = iter(it)
return iter(lambda: list(islice(it, size)), [])