Skip to main content

A high performance asynchronous Python client for Memcached with full batteries included

Project description

A high performance asynchronous Python client for Memcached with full batteries included

https://readthedocs.org/projects/emcache/badge/?version=latest https://github.com/emcache/emcache/workflows/CI/badge.svg https://github.com/emcache/emcache/workflows/PyPi%20release/badge.svg

Emcache stands on the giant’s shoulders and implements most of the characteristics that are desired for a Memcached client based on the experience of other Memcached clients, providing the following main characteristics:

  • Support for many Memcached hosts, distributing traffic around them by using the Rendezvous hashing algorithm.

  • Support for different commands and different flag behaviors like noreply, exptime or flags.

  • Support for SSL/TLS protocol.

  • Support for SASL authentication by ASCII protocol.

  • Support for autodiscovery, which should work with AWS and GCP memcached clusters.

  • Adaptative connection pool, which increases the number of connections per Memcache host depending on the traffic.

  • Node healthiness traceability and an optional flag for disabling unhealthy for participating in the commands.

  • Metrics for operations and connections, send them to your favourite TS database for knowing how the Emcache driver is behaving.

  • Listen to the most significant cluster events, for example for knowing when a node has been marked as unhealthy.

  • Speed, Emcache is fast. See the benchmark section.

Usage

For installing

pip install emcache

The following snippet shows the minimal stuff that would be needed for creating a new client and saving a new key and retrieving later the value.

import asyncio
import emcache
async def main():
    client = await emcache.create_client([emcache.MemcachedHostAddress('localhost', 11211)])
    await client.set(b'key', b'value')
    item = await client.get(b'key')
    print(item.value)
    await client.close()
asyncio.run(main())

Emcache has currently support, among many of them, for the following commands:

  • get Used for retrieving a specific key.

  • gets Cas version that returns also the case token of a specific key.

  • get_many Many keys get version.

  • gets_many Many keys + case token gets version.

  • gat Used retrieving a specific key if exists and update expiration time(Get and Touch).

  • gats Cas version that retrieving a specific key if exists and update expiration time(Get and Touch with Cas).

  • gat_many Many keys gat version.

  • gats_many Many keys + case token gats version.

  • set Set a new key and value

  • add Add a new key and value, if and only if it does not exist.

  • replace Update a value of a key, if and only if the key does exist.

  • append Append a value to the current one for a specific key, if and only if the key does exist.

  • prepend Prepend a value to the current one for a specific key, if and only if the key does exist.

  • cas Update a value for a key if and only if token as provided matches with the ones stored in the Memcached server.

  • version Version string of this server.

  • flush_all Its effect is to invalidate all existing items immediately (by default) or after the expiration specified.

  • delete The command allows for explicit deletion of items.

  • touch The command is used to update the expiration time of an existing item without fetching it.

  • increment/decrement Commands are used to change data for some item in-place, incrementing or decrementing it.

  • cache_memlimit This command allow set in runtime cache memory limit.

  • stats Show a list of required statistics about the server, depending on the arguments.

  • verbosity Command control STDOUT/STDERR info, choose level and look logging memcached.

Take a look at the documentation for getting a list of all of the operations that are currently supported.

Some of the commands have support for the following behavior flags:

  • noreply for storage commands like set we do not wait for an explicit response from the Memcached server. Sacrifice the explicit ack from the Memcached server for speed.

  • flags for storage we can save an int16 value that can be retrieved later on by fetch commands.

  • exptime for storage commands this provides a way of configuring an expiration time, once that time is reached keys will be automatically evicted by the Memcached server

For more information about usage, read the docs.

Benchmarks

The following table shows how fast - operations per second - Emcache can be compared to the other two Memcached Python clients, aiomcache and pymemcache. For that specific benchmark two nodes were used, one for the client and one for the Memcached server, using 32 TCP connections and using 32 concurrent Asyncio tasks - threads for the use case of Pymemcache. For Emcache and Aiomcache uvloop was used as a default loop.

In the first part of the benchmark, the client tried to run as mucha set operations it could, and in a second step the same was done but using get operations.

Client

Concurrency

Sets opS/sec

Sets latency AVG

Gets opS/sec

Gets latency AVG

aiomcache

32

33872

0.00094

34183

0.00093

pymemcache

32

32792

0.00097

32961

0.00096

emcache

32

49410

0.00064

49212

0.00064

emcache (autobatching)

32

49410

0.00064

89052

0.00035

Emcache performed better than the other two implementations reaching almost 50K ops/sec for get and set operations. One autobatching is used it can boost the throughtput x2 (more info about autobatching below)

Another benchmark was performed for comparing how each implementation will behave in case of having to deal with more than 1 node, a new benchmark was performed with different cluster sizes but using the same methodology as the previous test by first, performing as many set operations it could and later as many get operations it could. For this specific use test with Aiomemcahce could not be used since it does not support multiple nodes.

Client

Concurrency

Memcahed Nodes

Sets opS/sec

Sets latency AVG

Gets opS/sec

Gets latency AVG

pymemcache

32

2

21260

0.00150

21583

0.00148

emcache

32

2

42245

0.00075

48079

0.00066

pymemcache

32

4

15334

0.00208

15458

0.00207

emcache

32

4

39786

0.00080

47603

0.00067

pymemcache

32

8

9903

0.00323

9970

0.00322

emcache

32

8

42167

0.00075

46472

0.00068

The addition of new nodes did not add almost degradation for Emcache, in the last test with 8 nodes Emcache reached 42K get ops/sec and 46K set ops/sec. On the other hand, Pymemcached suffered substantial degradation making Emcache ~x5 times. faster.

Autobatching

Autobatching provides you a way for fetching multiple keys using a single command, batching happens transparently behind the scenes without bothering the caller.

For start using the autobatching feature you must provide the parameter autobatching as True, hereby all usages of the get and gets command will send batched requests behind the scenes.

Get´s are piled up until the next loop iteration. Once the next loop iteration is reached all get´s are transmitted using the same Memcached operation.

Autobatching can boost up the throughput of your application x2/x3.

Development

Clone the repository and its murmur3 submodule

git clone --recurse-submodules git@github.com:emcache/emcache

Compile murmur3

pushd vendor/murmur3
make static
popd

Install emcache with dev dependencies

make install-dev

Testing

Run docker containers, add read write privileges

docker compose up -d
docker exec memcached_unix1 sh -c "chmod a+rw /tmp/emcache.test1.sock"
docker exec memcached_unix2 sh -c "chmod a+rw /tmp/emcache.test2.sock"

Run tests

make test

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

emcache-1.3.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (282.0 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

emcache-1.3.3-cp314-cp314-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl (274.6 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64manylinux: glibc 2.5+ x86-64

emcache-1.3.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (283.0 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

emcache-1.3.3-cp313-cp313-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl (277.9 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64manylinux: glibc 2.5+ x86-64

emcache-1.3.3-cp313-cp313-macosx_11_0_arm64.whl (74.2 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

emcache-1.3.3-cp313-cp313-macosx_10_13_x86_64.whl (74.6 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

emcache-1.3.3-cp313-cp313-macosx_10_13_universal2.whl (114.2 kB view details)

Uploaded CPython 3.13macOS 10.13+ universal2 (ARM64, x86-64)

emcache-1.3.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (289.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

emcache-1.3.3-cp312-cp312-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl (284.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64manylinux: glibc 2.5+ x86-64

emcache-1.3.3-cp312-cp312-macosx_11_0_arm64.whl (74.6 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

emcache-1.3.3-cp312-cp312-macosx_10_13_x86_64.whl (75.1 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

emcache-1.3.3-cp312-cp312-macosx_10_13_universal2.whl (115.1 kB view details)

Uploaded CPython 3.12macOS 10.13+ universal2 (ARM64, x86-64)

emcache-1.3.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (270.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

emcache-1.3.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (275.5 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

emcache-1.3.3-cp311-cp311-macosx_11_0_arm64.whl (74.0 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

emcache-1.3.3-cp311-cp311-macosx_10_9_x86_64.whl (74.0 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

emcache-1.3.3-cp311-cp311-macosx_10_9_universal2.whl (113.2 kB view details)

Uploaded CPython 3.11macOS 10.9+ universal2 (ARM64, x86-64)

emcache-1.3.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (256.4 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

emcache-1.3.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (262.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

emcache-1.3.3-cp310-cp310-macosx_11_0_arm64.whl (74.1 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

emcache-1.3.3-cp310-cp310-macosx_10_9_x86_64.whl (74.1 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

emcache-1.3.3-cp310-cp310-macosx_10_9_universal2.whl (113.5 kB view details)

Uploaded CPython 3.10macOS 10.9+ universal2 (ARM64, x86-64)

emcache-1.3.3-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (257.2 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

emcache-1.3.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (262.4 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

emcache-1.3.3-cp39-cp39-macosx_11_0_arm64.whl (74.8 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

emcache-1.3.3-cp39-cp39-macosx_10_9_x86_64.whl (74.8 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

emcache-1.3.3-cp39-cp39-macosx_10_9_universal2.whl (114.8 kB view details)

Uploaded CPython 3.9macOS 10.9+ universal2 (ARM64, x86-64)

emcache-1.3.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (266.0 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

emcache-1.3.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl (274.4 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

emcache-1.3.3-cp38-cp38-macosx_11_0_arm64.whl (76.9 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

emcache-1.3.3-cp38-cp38-macosx_10_9_x86_64.whl (76.8 kB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

emcache-1.3.3-cp38-cp38-macosx_10_9_universal2.whl (119.1 kB view details)

Uploaded CPython 3.8macOS 10.9+ universal2 (ARM64, x86-64)

File details

Details for the file emcache-1.3.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for emcache-1.3.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ef67736580b621bc14d8f5c90344edaf96f786c5a939f4af91b3176e3fa71924
MD5 967b06148d14f2b16c03da77c07f2fae
BLAKE2b-256 c9cbd5ffffd1c408e4e1a73bda78468f71fe9620f6685b72a5c19488e23a529b

See more details on using hashes here.

File details

Details for the file emcache-1.3.3-cp314-cp314-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for emcache-1.3.3-cp314-cp314-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 b5148b3064dcbad882e86c916f8f7c305a1780b51b2621bc951ed255d7185654
MD5 6bdc5e2cda3b3e8793bf81ab9c15a7b9
BLAKE2b-256 2104f22168f085fc9eb3fa0625d74037c43f1fb715d45b1d9607aa525b3eabe8

See more details on using hashes here.

File details

Details for the file emcache-1.3.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for emcache-1.3.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 635254f305734ef0a9439025c06fba71088efc3a7b6a43648abd015b1ece5fe0
MD5 d6465f7536ce9f1621d6efc95a9caba2
BLAKE2b-256 7ec958b3f6d553006ca69ac27708bdc3818de0cd0e2877ddfb7d4ad1d4f64cb0

See more details on using hashes here.

File details

Details for the file emcache-1.3.3-cp313-cp313-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for emcache-1.3.3-cp313-cp313-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 0e11e54f9478f5a6a4c911e6f293307d52ad4f143e00b2fdcac1560e8ece52c2
MD5 850d807e41a03bbc9499db105146c2e3
BLAKE2b-256 2d181e19b79f5dec6b488ecb4d470976a3c972d2f1983b53dcf458a54ac8d548

See more details on using hashes here.

File details

Details for the file emcache-1.3.3-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for emcache-1.3.3-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f3cea8c3b7a761c5660762fd69bc656559087257c113ce6b62eb66ae9662609d
MD5 6c36608c42c15bed252e24ac3e5dd57a
BLAKE2b-256 9bfb8b6c5b4a33fb86e1ca81261437712fe4158c0750f92432e458b8b7141092

See more details on using hashes here.

File details

Details for the file emcache-1.3.3-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for emcache-1.3.3-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 d4f441b86a3cffbe42149b15fcd2e083da82dc61913efcc517fb64724c5eadc7
MD5 dad62c2859bd25abbf3f51020bb7a574
BLAKE2b-256 1644ea431285e8d46afe25a07b9ca3e3326dab10f38a0f6f92dd02dcd2894ace

See more details on using hashes here.

File details

Details for the file emcache-1.3.3-cp313-cp313-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for emcache-1.3.3-cp313-cp313-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 f7f705181314529e5e19199416cd854cd4ec622dec113af5376854c761843c58
MD5 d643dc55d7ac5f1855701a0805da2603
BLAKE2b-256 5cdc0ba382866711a78974e0422738a9b4326d9bd7f131543723e660696ba3de

See more details on using hashes here.

File details

Details for the file emcache-1.3.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for emcache-1.3.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 6118fc2c846632522a549553d7c8fc29f1bd3b3c6f4684651d33cb3815e85262
MD5 a0b02e71b0ebec1d726b13fc73d4d517
BLAKE2b-256 697d4a6e8774ea3e1aa88b87b923be654dc835c82489e22e944ece91cfb01981

See more details on using hashes here.

File details

Details for the file emcache-1.3.3-cp312-cp312-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for emcache-1.3.3-cp312-cp312-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 e26ebcdc4d71b1945fa4a782457b5505a3fc4519bb5e55e9aac7c801d616dad5
MD5 6f9443d95b1d823aeaf6600137a81e2a
BLAKE2b-256 389ec6a0dc935e59905f49cc60d9ac52c4d56976130653e5aabe3d5b0d9f0736

See more details on using hashes here.

File details

Details for the file emcache-1.3.3-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for emcache-1.3.3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 db9506fb274bd35f20685b9bc886f68e9c77d4a094612fbcb852039139f0dd23
MD5 bec1ef04febf3110b17788a7ccdf33be
BLAKE2b-256 e077da322ba5ab79187361af916a6b0ef2d10144f0383e62b9dd66380f359123

See more details on using hashes here.

File details

Details for the file emcache-1.3.3-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for emcache-1.3.3-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 40b4354955b34af43f74524f593b523aadba16dd583fd4866edba0a3b6666af0
MD5 18df44612dbbf76b48538a951253f97f
BLAKE2b-256 d23f5d6d0eb16b419206257e399ee694e1724e4649e9946ad7b0fc98011c7db7

See more details on using hashes here.

File details

Details for the file emcache-1.3.3-cp312-cp312-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for emcache-1.3.3-cp312-cp312-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 b6c4f43745abc95c399caa22a35a89d11541b9d9037ec6da80bd91ba85648310
MD5 a29e25bb5ff49734ee96c967b84eb6b3
BLAKE2b-256 862b71efd5c9fd8d129debf74543024ac65adb3c9e3313e1a09d7daadbb93b3b

See more details on using hashes here.

File details

Details for the file emcache-1.3.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for emcache-1.3.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 ba918ceea279180c444763bb8c5d22534ad111aec898531c40809ce9590845f0
MD5 19bb247532ce7d0451eb8985c6b72356
BLAKE2b-256 9c2fb6a0ed34f343dc091dbdcbaa51c4d5feebf47845dabc0f489506096ba924

See more details on using hashes here.

File details

Details for the file emcache-1.3.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for emcache-1.3.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e463ca3af633bb68ea0ba875f3ac7707195d722151ebd10cb4fe56a5c6ada4d0
MD5 bb5ffe68060e1a909fe1be3cbd394fa7
BLAKE2b-256 35838930425e5ff324d142105bb59eee33fb9439875559c9a238d2fc8dd9d561

See more details on using hashes here.

File details

Details for the file emcache-1.3.3-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for emcache-1.3.3-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ec5888c40f0e07e3f49a4dba46d93c5701f42ee783d4a0d87d6459294dbd40dc
MD5 8467f13b7dcf677a3fd07c6d6d85e879
BLAKE2b-256 e71decd9756a156a9db1c46560e41594f8bf6093a181d5bd6f3c78d64852d737

See more details on using hashes here.

File details

Details for the file emcache-1.3.3-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for emcache-1.3.3-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b3a1023503032898027c16603719cb6d45a034c4230fe2346c8c8e787172f451
MD5 146641ff0b6449b5bc90f949936b2501
BLAKE2b-256 f14e2587b007f91fa26d7d648d4ddb2379bb0c54a08bb0600e1b61cb84097573

See more details on using hashes here.

File details

Details for the file emcache-1.3.3-cp311-cp311-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for emcache-1.3.3-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 f14718f3d637e874652b37920bd94efcf8a29fcaa53c0279fd8f00a2293a32c9
MD5 2dbd7dab9e2f8a8fe13975d1906a9496
BLAKE2b-256 810a49c6ba6d5bab4304838c67f6c534ff08a38dbf304d175debeb008022ca83

See more details on using hashes here.

File details

Details for the file emcache-1.3.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for emcache-1.3.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 e7103c092e9ee76c985e9a48b5059b2e47112f99a9cb6b623549dc33c4f71204
MD5 563566e9165d7402938a44ed3424fb2c
BLAKE2b-256 0e5d18a55db7134c8f528546f93688ccba9928a6661a0c9dbf9e0bdeed78426a

See more details on using hashes here.

File details

Details for the file emcache-1.3.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for emcache-1.3.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b31826e63a2808a8573255c3fd8757aee6b93782f3df1fdcc296390b7ac8b860
MD5 1e1624d28aec01fbd5bd3c2a65b47411
BLAKE2b-256 d04035f67637f2d7ba6fef2a100e5cd0374e937323d2140de016f75c26c0be71

See more details on using hashes here.

File details

Details for the file emcache-1.3.3-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for emcache-1.3.3-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d02a079daef5289164c955da736ac28e2934251def63dd32c35c0995cb24c6be
MD5 b8c9cb50c4ac7d26b3392d53e6f01f9e
BLAKE2b-256 cde5cfe20673a321b8c634b6f8a9e3be9d6240c215b623effbaa2ed35bb4081c

See more details on using hashes here.

File details

Details for the file emcache-1.3.3-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for emcache-1.3.3-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 8f24782f581d95b23284cb5e67eb1a6aab6e07cf3ffaf59de740ea5a1267d7ab
MD5 f4e82a3d73a93c22c3e42d7faca5213c
BLAKE2b-256 8fa82bbb9415249a63834fd5a6908805cd50f33b54c427168d4653cdffe915dc

See more details on using hashes here.

File details

Details for the file emcache-1.3.3-cp310-cp310-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for emcache-1.3.3-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 4343f510327a0b5ea4cf1b1abdac5dd2a38e84d7227e9629b01507ef8d127b89
MD5 2bd7f508ebefea6bc98ba90ab4edc327
BLAKE2b-256 3dd3ecade36df390632cb185b2f2b1f27e443f3ca40a8d22826702c4f6a4242b

See more details on using hashes here.

File details

Details for the file emcache-1.3.3-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for emcache-1.3.3-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 938864aa13a87cbda0eecf945bae8a180da57f49bb4bfbb0397adf51932e6c12
MD5 24a371be818d0070f528286a9d2d7a36
BLAKE2b-256 fe79da8f6e56f8a29dbb91000849672f12aa0f2f69c5404713cac8744841ef0d

See more details on using hashes here.

File details

Details for the file emcache-1.3.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for emcache-1.3.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 5b132196d8e0087da5a9300752c927215f60203072d5cef5d5abb34bda50a8a7
MD5 ca7839c170c8ad52866577ef59a56571
BLAKE2b-256 5c8177178a29432e19c76068bc23d01cf8209ff6b64db3ca6018b93592af6f0f

See more details on using hashes here.

File details

Details for the file emcache-1.3.3-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for emcache-1.3.3-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4fc2a7bdb29be5a1c1996c223a98032da59596b84c21fb4146167557e622be9d
MD5 f01585374f9e4f4d03fe88bf3cb75bbe
BLAKE2b-256 c1930691c46b88fb9354e4eb42f9e075cac5669e2c23a34edf9e9283b234019d

See more details on using hashes here.

File details

Details for the file emcache-1.3.3-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for emcache-1.3.3-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 3616b142c18ed011bc12a093be13c9b3a422f78eebe152a612a36c79f82efc88
MD5 554760a22eaa29f123051aac2c346675
BLAKE2b-256 f8a369f8e528cd1a2b145f1ca549e0e7567a9fafb2a71e0768a89b12c2ff2002

See more details on using hashes here.

File details

Details for the file emcache-1.3.3-cp39-cp39-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for emcache-1.3.3-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 1344ae72a02e51b377fdf7c4fd84cf8c9a97af7282faf481c957f04afc0bf954
MD5 f15d68a0ce598ed68702fa986df1481b
BLAKE2b-256 4a674bda7135176146c9bfb219f4a239974444d809c8d84bfffb68637599bd04

See more details on using hashes here.

File details

Details for the file emcache-1.3.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for emcache-1.3.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 60515a724e8d3f8d31c094661d37ad974af626f45e196812aea695eab86944f6
MD5 4659749828bbed0beb2fa9c770ba8e6f
BLAKE2b-256 9b6cb51dcef3471754e78c52270bd202ed483e308e5b3607b526bbda774ad1e2

See more details on using hashes here.

File details

Details for the file emcache-1.3.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for emcache-1.3.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 07b4c40435c66eb66eaf0bc05b4d930f25584b547401028b0881ad46a7073754
MD5 c421981b0067c5ddc5455e56e71ed441
BLAKE2b-256 eb9f3abe4d20a4ddc1bddfa1d6e7c0c02be7517114166a658ec2af82dadedaa3

See more details on using hashes here.

File details

Details for the file emcache-1.3.3-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for emcache-1.3.3-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3bed67dbdb128ae36a2f36d59a1c801251107c679d257cc531907e38bcd37266
MD5 f5d1b4270d05e93abb9f4d1e22c3271d
BLAKE2b-256 653005782a51450809e12471e265ec79b9fff12101808c244565b5e7dcefd3b4

See more details on using hashes here.

File details

Details for the file emcache-1.3.3-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for emcache-1.3.3-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 a95643548f68b0b102fc0ea6cd3f53c912356ff18f7b06ac3aca30e3497eeda9
MD5 fe2da69ea50ed155e20835c2052f2041
BLAKE2b-256 5d47deefa0facf207b9323200bc4b9f49ee0496734e97189c564fc1bd87f98da

See more details on using hashes here.

File details

Details for the file emcache-1.3.3-cp38-cp38-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for emcache-1.3.3-cp38-cp38-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 5bc25511dceb35dce6e19b9e96466a4624f42d59d29579a8799b9fc7d9bcb1ab
MD5 72f3e03e4057a54709dc69744bd0fdf4
BLAKE2b-256 1c51895b33e492390063663da778963b5c72d7d811a73a1defa7dc2b704032f4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page