Skip to main content

Multi database watcher for changes on them

Project description

Python Database Watcher Library

License Pypi Python Versions

In a nutshell Python Database Watcher Library is a small library with a set of utilities to help you to monitor and watch the database changes.

Install

> pip install databases_watcher

Supported databases

Redis

Supported modes:

  • Queue watch mode: redis://[[user]:[password]]@host:port/?db=[INT]&queue=[STRING]
  • Pub/Sub mode: redis+pubsub://[[user]:[password]]@host:port/?db=[INT]&channel=[STRING]
  • Changes watch mode (TODO): redis+watch://[[user]:[password]]@host:port/?db=[INT]&queue=[STRING]

TODO: improve watch mode

Usage examples

Redis

Queue watch mode (Sync mode)

from databases_watcher import connect_database

def main():
    redis_watch = connect_database("redis://localhost:6501/?db=0&queue=default")

    redis_watch.send_message("hello!")
    redis_watch.send_json_message({"message": "hello!"})

    print(next(redis_watch.read_messages()))
    print(next(redis_watch.read_json_messages()))


if __name__ == '__main__':
    main()

Queue watch mode (Async mode)

import asyncio

from databases_watcher import connect_database_async

async def main():
    redis_watch = await connect_database_async("redis://localhost:6501/?db=0&queue=default")

    await redis_watch.send_message("hello!")
    await redis_watch.send_json_message({"message": "hello!"})

    async for message in redis_watch.read_messages():
        print(message)
        break

    async for message in redis_watch.read_json_messages():
        print(message)
        break


if __name__ == '__main__':

    asyncio.run(main())

Pub/Sub watch mode (Sync mode)

import time
import threading

from databases_watcher import connect_database

CONNECTION_STRING = "redis+pubsub://localhost:6501/?db=0&channel=default"

def background_read_pubsub():
    redis_watch = connect_database(CONNECTION_STRING)

    print(next(redis_watch.read_messages()))
    print(next(redis_watch.read_json_messages()))


def main():
    redis_watch = connect_database(CONNECTION_STRING)

    t = threading.Thread(target=background_read_pubsub)
    t.start()

    time.sleep(2)

    redis_watch.send_message("hello!")
    redis_watch.send_json_message({"message": "hello!"})

    t.join()

if __name__ == '__main__':
    main()

Pub/Sub watch mode (Async mode)

import asyncio

from databases_watcher import connect_database_async

CONNECTION_STRING = "redis+pubsub://localhost:6501/?db=0&channel=default"

async def background_read_pubsub():
    redis_watch = await connect_database_async(CONNECTION_STRING)

    async for message in redis_watch.read_messages():
        print(message)
        break

    async for message in redis_watch.read_json_messages():
        print(message)
        break

async def main():
    redis_watch = await connect_database_async(CONNECTION_STRING)

    asyncio.create_task(background_read_pubsub())
    await asyncio.sleep(2)

    await redis_watch.send_message("hello!")
    await redis_watch.send_json_message({"message": "hello!"})

if __name__ == '__main__':
    asyncio.run(main())

License

Dictionary Search is Open Source and available under the MIT.

Contributions

Contributions are very welcome. See CONTRIBUTING.md or skim existing tickets to see where you could help out.

Project details


Download files

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

Source Distribution

databases_watcher-1.0.0.tar.gz (7.3 kB view details)

Uploaded Source

File details

Details for the file databases_watcher-1.0.0.tar.gz.

File metadata

  • Download URL: databases_watcher-1.0.0.tar.gz
  • Upload date:
  • Size: 7.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for databases_watcher-1.0.0.tar.gz
Algorithm Hash digest
SHA256 8565ccfd15292f3d800941bd2173417d1f1a4208aa6b3d239810ab5aaf0df284
MD5 63d1f342d61d4fde9e07d8694511861a
BLAKE2b-256 0d777a294e416fc30ff506132f01a8d5103d2ae1902b24a784a478cc8e400f61

See more details on using hashes here.

Supported by

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