Skip to main content

Python package containing common functions for python service based architecture.

Project description

mrkutil

This is a Python package containing common functions for Python service-based architecture.

Base Handler

BaseHandler is an abstract class used for implementing function/class level factory pattern.

data = ["method"] = "my_defined_method"
handler = BaseHandler.process_data(data)

Where my_defined_method is the name of the child handler name static method.

Base Redis

Simple class with utility functions for working with redis. Key is the prefix for all redis objects, and timeout is how long redis keeps the object in cache. Example usage:

cache = RedisBase(key="key", timeout=300)
res = cache.get("this_key")

Communication

Communication package is a wrapper arround RabbitMQPubSub library that provides a simple interface for publishing and subscribing to messages.

call_service is a function that can be used to call a service with a message and await its response.

call_service(request_data=data, destination="some_exchange", source="self_exchange")

listen is a function that can be used to listen to a queue and call a function when a message is received. Commonly implemented in microservices in main.py as a long living process.

listen(exchange="some_exchange", exchange_type="direct", queue="some_queue")

trigger_service triggers a service with a message but does not wait for a response. Useful for fire and forget scenarios.

trigger_service(request_data=data, destination="some_exchange", source="self_exchange")

Logging Configuration

The get_logging_config function in mrkutil/logging/logging_config.py generates a logging configuration dictionary based on the provided parameters. It supports both JSON and default formatters.

config = get_logging_config(log_level="DEBUG", json_format=False, api=True)

Pagination

The paginate function in mongoengine.py and sqlalchemy.py is a utility function that paginates a list of items based on the provided page and page size. It is useful in microservices where there is no accessible web framework pagination method, and to avoid code duplication.

There is also a dependency.py which contains pagination_params function that are usually used in fastapi dependency injection.

paginate(items, page_number=1, page_size=10, direction="asc", sort_by="id")

Responses

ServiceResponse class is a utility class for creating a standard response object that can be used in all services. It is useful for standardizing the response format across all services.

ServiceResponse(code=400, message="Validation Error", errors=[{"field": "name", "message": "Name is required"}])

Authors

Deployment to PyPI

To deploy this package to PyPI, use the following commands:

flit build
flit publish

Contributing

Contributions are always welcome! If you have any suggestions or improvements, feel free to submit a pull request or open an issue.

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

mrkutil-1.7.0.tar.gz (16.8 kB view details)

Uploaded Source

Built Distribution

mrkutil-1.7.0-py2.py3-none-any.whl (19.3 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file mrkutil-1.7.0.tar.gz.

File metadata

  • Download URL: mrkutil-1.7.0.tar.gz
  • Upload date:
  • Size: 16.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.31.0

File hashes

Hashes for mrkutil-1.7.0.tar.gz
Algorithm Hash digest
SHA256 9c40f45ccd426b254b2ebc5046a98f21feabc5ba4d9dd26a03d8a10674bb50b0
MD5 ac218b0b2806599095386508f7b9e58c
BLAKE2b-256 25ee4fd4f6096f535984650ad4f86a61806409f5014447d880404d76de6a6523

See more details on using hashes here.

File details

Details for the file mrkutil-1.7.0-py2.py3-none-any.whl.

File metadata

  • Download URL: mrkutil-1.7.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 19.3 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.31.0

File hashes

Hashes for mrkutil-1.7.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 d36baa18e91404fa7cd0330756b4f71ac806e9d6e38a16a844a44dcffe91f79e
MD5 c5670f952857cdcbb7c2b8a014fce4a8
BLAKE2b-256 0b1cfb6fe8aed207da2f67d131b0d60883cd921907990a6493054c5bd337b1c0

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