Skip to main content

Python async client for Redis key-value store

Project description

coredis

docs codecov Latest Version in PyPI ci Supported Python versions


coredis is an async redis client with support for redis server, cluster & sentinel.

  • The client API uses the specifications in the Redis command documentation to define the API by using the following conventions:

    • Arguments retain naming from redis as much as possible
    • Only optional variadic arguments are mapped to variadic positional or keyword arguments. When the variable length arguments are not optional (which is almost always the case) the expected argument is an iterable of type Parameters or Mapping.
    • Pure tokens used as flags are mapped to boolean arguments
    • One of arguments accepting pure tokens are collapsed and accept a PureToken
  • Responses are mapped as closely from RESP <-> python types as possible.

  • For higher level concepts such as Pipelines, LUA Scripts, PubSub & Streams abstractions are provided to simplify interaction requires pre-defined sequencing of redis commands (see Command Wrappers) and the Handbook.

Warning The command API does NOT mirror the official python redis client. For details about the high level differences refer to Divergence from aredis & redis-py


Installation

To install coredis:

$ pip install coredis

Feature Summary

Deployment topologies

Application patterns

Server side scripting

Miscellaneous

Quick start

Single Node or Cluster client

import asyncio
from coredis import Redis, RedisCluster

async def example():
    client = Redis(host='127.0.0.1', port=6379, db=0)
    # or with redis cluster
    # client = RedisCluster(startup_nodes=[{"host": "127.0.01", "port": 7001}])
    await client.flushdb()
    await client.set('foo', 1)
    assert await client.exists(['foo']) == 1
    assert await client.incr('foo') == 2
    assert await client.incrby('foo', increment=100) == 102
    assert int(await client.get('foo')) == 102

    assert await client.expire('foo', 1)
    await asyncio.sleep(0.1)
    assert await client.ttl('foo') == 1
    assert await client.pttl('foo') < 1000
    await asyncio.sleep(1)
    assert not await client.exists(['foo'])

asyncio.run(example())

Sentinel

import asyncio
from coredis.sentinel import Sentinel

async def example():
    sentinel = Sentinel(sentinels=[("localhost", 26379)])
    primary = sentinel.primary_for("myservice")
    replica = sentinel.replica_for("myservice")

    assert await primary.set("fubar", 1)
    assert int(await replica.get("fubar")) == 1

asyncio.run(example())

To see a full list of supported redis commands refer to the Command compatibility documentation

Compatibility

coredis is tested against redis versions 6.0.x, 6.2.x, 7.0.x & 7.2-rc1. The test matrix status can be reviewed here

coredis is additionally tested against:

  • uvloop >= 0.15.0

Supported python versions

  • 3.7
  • 3.8
  • 3.9
  • 3.10
  • 3.11
  • PyPy 3.7
  • PyPy 3.8
  • PyPy 3.9

Redis-like backends

coredis is known to work with the following databases that have redis protocol compatibility:

References

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distribution

coredis-4.12.0b4.tar.gz (230.5 kB view details)

Uploaded Source

Built Distributions

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

coredis-4.12.0b4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (341.9 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

coredis-4.12.0b4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (339.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

coredis-4.12.0b4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (345.4 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

coredis-4.12.0b4-cp311-cp311-macosx_11_0_arm64.whl (315.7 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

coredis-4.12.0b4-cp311-cp311-macosx_10_9_x86_64.whl (318.3 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

coredis-4.12.0b4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (343.9 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

coredis-4.12.0b4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (340.8 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

coredis-4.12.0b4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (347.6 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

coredis-4.12.0b4-cp310-cp310-macosx_11_0_arm64.whl (317.6 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

coredis-4.12.0b4-cp310-cp310-macosx_10_9_x86_64.whl (319.9 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

coredis-4.12.0b4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (344.0 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

coredis-4.12.0b4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (340.6 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

coredis-4.12.0b4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (347.5 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

coredis-4.12.0b4-cp39-cp39-macosx_11_0_arm64.whl (317.6 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

coredis-4.12.0b4-cp39-cp39-macosx_10_9_x86_64.whl (319.8 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

coredis-4.12.0b4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (343.2 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

coredis-4.12.0b4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (340.2 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARM64

coredis-4.12.0b4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (347.1 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

coredis-4.12.0b4-cp38-cp38-macosx_11_0_arm64.whl (316.1 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

coredis-4.12.0b4-cp38-cp38-macosx_10_9_x86_64.whl (318.2 kB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

coredis-4.12.0b4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (335.9 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ x86-64

coredis-4.12.0b4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (333.5 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ ARM64

coredis-4.12.0b4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (339.6 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

coredis-4.12.0b4-cp37-cp37m-macosx_10_9_x86_64.whl (314.4 kB view details)

Uploaded CPython 3.7mmacOS 10.9+ x86-64

File details

Details for the file coredis-4.12.0b4.tar.gz.

File metadata

  • Download URL: coredis-4.12.0b4.tar.gz
  • Upload date:
  • Size: 230.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for coredis-4.12.0b4.tar.gz
Algorithm Hash digest
SHA256 b3a730af3574e48cbbeb024febbb771be52a549839c53a1099619844c57aef78
MD5 97e229a601374a0d16e7d893d10a58b7
BLAKE2b-256 369d0b0f28cd98b87a1bb3891813a1a32d4bb6df689f8737b11f7319edbf0b6f

See more details on using hashes here.

File details

Details for the file coredis-4.12.0b4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for coredis-4.12.0b4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bfbc3d78e98f6e3bebb89c187c9f1a17664d141ba32abbc983ca735a97bdbc1f
MD5 365de19a87eb7c3f543f1a44d78d427b
BLAKE2b-256 4211e9896c7fa217f60bcf61ade1d5feb7ad117aa9dde4eb17ac544a7f31fcd4

See more details on using hashes here.

File details

Details for the file coredis-4.12.0b4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for coredis-4.12.0b4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 976005f8ddf93a89339581cb7777dc723707b6ec7f12f8dd811d9be34eb9b628
MD5 f194b8fe5db49d43d689273d44f3b8f6
BLAKE2b-256 7ca10c379fd763f4bd9c03668c570344308951117aaa539ff4030551b6d439bc

See more details on using hashes here.

File details

Details for the file coredis-4.12.0b4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for coredis-4.12.0b4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 b09bd295e3b4342e60d1ef322a6465a079efaea21119366ff21a95d52220c564
MD5 c50d64fd6993766636159f3be66d23a5
BLAKE2b-256 f1c48f22f694a4a92cc4bd3a8afd95826805f5d00245199da50dfee7d6d2f29b

See more details on using hashes here.

File details

Details for the file coredis-4.12.0b4-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for coredis-4.12.0b4-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d96040db767381d38be4191a52966e26fc47771f3a080d476c1f688b42c0ec8a
MD5 1a35c7c72e3def74685fe1ea9938a6d1
BLAKE2b-256 e79dfc3085e81a1f700af89f325786b339b2171d7c4f5e556527e08cc9cdf75f

See more details on using hashes here.

File details

Details for the file coredis-4.12.0b4-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for coredis-4.12.0b4-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 ca6eb26ff4fb85f1ef54576d1e1cd03b4da1f7e2542705c1342a12c9fb0daad2
MD5 67fa3b78891c686c143f0fe6e3c62d4c
BLAKE2b-256 d4d6df32a46135f6a36adafb178ce244e43ac5f28e07eb1474dd9663bb928abf

See more details on using hashes here.

File details

Details for the file coredis-4.12.0b4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for coredis-4.12.0b4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 31ce8c39b8a5b1fb85dfdf0474f999074a62d5001e55aa40df9cbb569d81bced
MD5 86564d873800e323874b1913d9d320a2
BLAKE2b-256 0b856473ba0d710e34b2128bf1d90ed2ae1efa13d9b791b2d2e737222b785f94

See more details on using hashes here.

File details

Details for the file coredis-4.12.0b4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for coredis-4.12.0b4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 953ce023befc4454f0a1b56f75a274d78321674faae5bfc43cd69899a77e038e
MD5 ce14ff75b90c451cca2ebe63a1d8a684
BLAKE2b-256 27e24cd3731bd05dad57c58a3ee3a19fe45a86d640b913a8962b9c002ef74bc8

See more details on using hashes here.

File details

Details for the file coredis-4.12.0b4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for coredis-4.12.0b4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 323c1f7af729ff026b376c88939603c162977a0ff8da2de3a3ffe06790bc872a
MD5 b2a5bd140c723c089029f241e019c0ab
BLAKE2b-256 be9db30fed8777fbb1fb379aa9accda674d19d3c707e8d76991cf8c0aa135b87

See more details on using hashes here.

File details

Details for the file coredis-4.12.0b4-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for coredis-4.12.0b4-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a6dd49833f29bc5ae08e83b033632f68e1ad379ead31c2d94aec81a1d3a886e3
MD5 ea0de94cdc4b28fa7b585f47a91e1a4c
BLAKE2b-256 ed30683c3470af653b74bfd99cf60215d211f7b85d2b915dfee7c280b89e6a39

See more details on using hashes here.

File details

Details for the file coredis-4.12.0b4-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for coredis-4.12.0b4-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 17afb90c001e1aead06500094d8be0e62626ce71dcb8ccf3cc479789adefd213
MD5 cddca824ae21f6e83a2754ed2df2eb55
BLAKE2b-256 0c4a6f25030d90b9aa379bcad4c338fb8b1e170c2d8811c2a8f7f4ed0db0dff2

See more details on using hashes here.

File details

Details for the file coredis-4.12.0b4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for coredis-4.12.0b4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 82eb7b1ce147a153e00ab4e96ec4d3267e6f4d0a01ec45aebacb030cb4f6bd4e
MD5 275d5391ce14c9f55e1e6b28067f4d44
BLAKE2b-256 81446b96c76eb479aea96bfacc4313c0bffbc2bf973a9ef16a78d7c8867dd8ec

See more details on using hashes here.

File details

Details for the file coredis-4.12.0b4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for coredis-4.12.0b4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a6484faf4d1b5af1b1fc79c28370a42308ad105d45f947bec905cc34bedb2bb5
MD5 74ccc384ca2df52f1a6f0ea694815352
BLAKE2b-256 71f209e648b87a3c7cbdc130285df1e8508aa4eaca478d985bbdb02e2eda3a95

See more details on using hashes here.

File details

Details for the file coredis-4.12.0b4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for coredis-4.12.0b4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 a9a8dbef39353bc9fc86277c58bb214f42ad449e4bc29ee6ebf711928d312d4c
MD5 59c5bd41a57e0b60faa15edd1549ee4c
BLAKE2b-256 7d18348de47b080473a8b70ac0f6df576340843b1839c668f930c12c498d7938

See more details on using hashes here.

File details

Details for the file coredis-4.12.0b4-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for coredis-4.12.0b4-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fdd5233069d61dd43de69183cf4f22453b683e1581e1444e7d73691575dc21ef
MD5 77a5468c38fbe6fbb789cca8681066f2
BLAKE2b-256 97094aa352a240fd0632e4795f3381c6193c7cc910eb63a7dbb0dae02e60a247

See more details on using hashes here.

File details

Details for the file coredis-4.12.0b4-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for coredis-4.12.0b4-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 cc0941bc39aba134d69fdeeb012546b40fbae3000231adf4e023185d956269a2
MD5 18f16e73c4e3d5bdfcb326a662e4f774
BLAKE2b-256 39b897604c8879971a4f16f69997ee03089cd423b9e2f6f87b1d460cebf3086a

See more details on using hashes here.

File details

Details for the file coredis-4.12.0b4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for coredis-4.12.0b4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 249512c62ec335aadb155215668579243611c2200327e79b81913dbecb508da1
MD5 f84306976061e2b27ce528a4527ecd29
BLAKE2b-256 7bd64c83767e39c73470e17e5dd3b2920dc19fc68775aa58c68d179efd075830

See more details on using hashes here.

File details

Details for the file coredis-4.12.0b4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for coredis-4.12.0b4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ad271f325e217f98fcd57b7d4e37db8936c43f8634fb2b923fa83f2833361a03
MD5 14240306c196a1d2598f9707792ac6f1
BLAKE2b-256 fcc9cac2154ea1e5bd178d35e066554c72e26817b2bda463c88246e82c71a38a

See more details on using hashes here.

File details

Details for the file coredis-4.12.0b4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for coredis-4.12.0b4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 e3ad97fd0f6a75b866ff7303fa19c98dcbc425fa52da64a318f20b0947a03d1e
MD5 a409607c110beae09da2224ab82f955b
BLAKE2b-256 2171a7985bbed50293dc27517a589a14e2cf2439c6277244fe92997a11abcec9

See more details on using hashes here.

File details

Details for the file coredis-4.12.0b4-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for coredis-4.12.0b4-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a4a8c8be5a95bf166deef42074e4837fb89620fa2304aafe3dd6a09edf493943
MD5 6841a7d49c94b1e417f8460eb1944300
BLAKE2b-256 95ec329259f2d40e69bae2eb411be4c79539bf24b36148f8efaad995aaa969df

See more details on using hashes here.

File details

Details for the file coredis-4.12.0b4-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for coredis-4.12.0b4-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e6139054f0055b82d0e63f36e0112118efc5f18be35a875a9af471193a5ecd5c
MD5 6d7a25cf08f1244b1dd972ca8649b3bc
BLAKE2b-256 5a03c2c5880cec88b90da141ca351dc0bfaa8dee369e25ac967e358013976c08

See more details on using hashes here.

File details

Details for the file coredis-4.12.0b4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for coredis-4.12.0b4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e402365cd6c45a045f08fbc7af7e6805856a4111ed343c68bb85818c8b927856
MD5 8eb4787d234a7587b5ab1e187a6e6025
BLAKE2b-256 9388ebfbab3528574173fbc411a82b5ecd29e381318bc7d227bbe105890e4f6e

See more details on using hashes here.

File details

Details for the file coredis-4.12.0b4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for coredis-4.12.0b4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7cb8b72148830e7b53df83c7cb8019374ed129799acb5b5a015b6788cd78baca
MD5 4bcc1c4bf0d5993169588a81c4c20ac0
BLAKE2b-256 5bbdf83ca2264d5a6212341323d17166a4223eab016047816763daaafb9bdd27

See more details on using hashes here.

File details

Details for the file coredis-4.12.0b4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for coredis-4.12.0b4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 6649d5f2b46d0999aeab0ada18cdb8ce9de5d3c80cd9cbe291ac4877d0f3284b
MD5 800f866303e3800e669596a7ac2619d6
BLAKE2b-256 b78a2768a2c72f8bbbec462066abc6bed6eedb80a56d67834ae8c1fb5cda092e

See more details on using hashes here.

File details

Details for the file coredis-4.12.0b4-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for coredis-4.12.0b4-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4ff3e5c387990cfefc20d786bf522e44fcf248385ee07e3dab6c8a47c4a73d04
MD5 9b1b5f402702d0e545ab4e4b7c5de64f
BLAKE2b-256 a3ea6af5d95aa54303cd99d166a467d2b4176131e27c64563fbe7e553bac622c

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