The two slowest staging API calls are for information that rarely changes. By caching the result the commands typically execute over twice as fast. Going further can see improvements of an order of magnitude or more by caching almost all the GET requests. In contrast to osclib/memoize.py this cache operates at the HTTP request level. This has several advantages: - Caches the expensive part (ie the HTTP request). There are a number of functions in osc.core and elsewhere that make the same API request, but process the result differently which would require multiple API calls using memoize. - Handles cases were a loader function uses class attributes as input and output and thus no relevant method parameters or return. An important example is StagingAPI._generate_ring_packages(). - Storage is project aware which allows caches to be deleted when a project is known to have changed. - Due to project awareness, can utilize OBS /statistics/latest_updated API call to determine which projects need to be expired. The cache file structure is as follows: - hostname(apiurl) - project - sha1(url) - sha1(url) See Cache.PATTERNS for changing the time to live (ttl) or add patterns to be cached.
4 lines
112 B
Plaintext
4 lines
112 B
Plaintext
<latest_updated>
|
|
<package name="notreal" project="notreal" updated="2016-12-18T11:49:37Z"/>
|
|
</latest_updated>
|