# python-distributed-lock module
This Python package provides a mechanism to acquire and release Redis and MYSQL locks with authentication. It is useful for ensuring that only one process can access a particular resource or execute a critical section of code at a time.
## Features
- Connects to Redis or MySQL with username and password for authentication.
- Acquires a lock, executes a function, and then releases the lock.
- Useful in distributed systems where resource locking is needed.
## Installation
To install the module, use `pip`:
```
pip install python_distributed_locking
```
# Please check your database connection before passing it to module
## use with mysql lock
```
from python_distributed_locking import start_cron_with_expression
mysql_user = "root"
mysql_pass = "root"
mysql_host = "localhost"
mysql_database = "mysql"
connection = mysql.connector.connect(
host=mysql_host,
user=mysql_user,
password=mysql_pass,
database=mysql_database,
pool_name="mypool",
pool_size=3
)
cron_expression = "* */5 * * *" # Runs every 5 minute
distributedlock.start_cron_with_expression(connection, my_custom_function, cron_expression,"mysql")
def my_custom_function():
# add whatever action you want in your custom function
pass
```
## use with redis lock
```
from python_distributed_locking import start_cron_with_expression
redis_host = "localhost"
redis_port = 6379
redis_username = "default"
redis_password = "root"
# Connect to Redis with username and password
connection = redis.StrictRedis(
host=redis_host,
port=redis_port,
username=redis_username,
password=redis_password,
decode_responses=True
)
cron_expression = "* */5 * * *" # Runs every 5 minute
distributedlock.start_cron_with_expression(connection, my_custom_function, cron_expression,"redis")
def my_custom_function():
# add whatever action you want in your custom function
pass
```
Raw data
{
"_id": null,
"home_page": null,
"name": "python-distributed-locking",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": "python, distributed, lock, rds, sql, redis, replicas, kubernetes",
"author": "Tanmay Varade",
"author_email": "tanmayvarade235@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/71/00/b609252e2fe86d5ad103be67bddedf058037302f112bc6fff1329b5face2/python_distributed_locking-1.0.tar.gz",
"platform": null,
"description": "\n# python-distributed-lock module\n\nThis Python package provides a mechanism to acquire and release Redis and MYSQL locks with authentication. It is useful for ensuring that only one process can access a particular resource or execute a critical section of code at a time.\n\n## Features\n- Connects to Redis or MySQL with username and password for authentication.\n- Acquires a lock, executes a function, and then releases the lock.\n- Useful in distributed systems where resource locking is needed.\n\n## Installation\n\nTo install the module, use `pip`:\n\n```\npip install python_distributed_locking\n```\n# Please check your database connection before passing it to module\n## use with mysql lock\n```\n\nfrom python_distributed_locking import start_cron_with_expression\n\nmysql_user = \"root\"\nmysql_pass = \"root\"\nmysql_host = \"localhost\"\nmysql_database = \"mysql\"\n\nconnection = mysql.connector.connect(\n host=mysql_host,\n user=mysql_user,\n password=mysql_pass,\n database=mysql_database,\n pool_name=\"mypool\",\n pool_size=3\n)\n\ncron_expression = \"* */5 * * *\" # Runs every 5 minute\ndistributedlock.start_cron_with_expression(connection, my_custom_function, cron_expression,\"mysql\")\n\n\ndef my_custom_function():\n # add whatever action you want in your custom function\n pass\n```\n\n## use with redis lock\n```\n\nfrom python_distributed_locking import start_cron_with_expression\n\nredis_host = \"localhost\"\nredis_port = 6379\nredis_username = \"default\"\nredis_password = \"root\"\n\n# Connect to Redis with username and password\nconnection = redis.StrictRedis(\n host=redis_host,\n port=redis_port,\n username=redis_username,\n password=redis_password,\n decode_responses=True\n)\n\ncron_expression = \"* */5 * * *\" # Runs every 5 minute\ndistributedlock.start_cron_with_expression(connection, my_custom_function, cron_expression,\"redis\")\n\n\ndef my_custom_function():\n # add whatever action you want in your custom function\n pass\n\n```\n",
"bugtrack_url": null,
"license": null,
"summary": "Package to used for handling lock mechanism when running appplication with multiple replicas",
"version": "1.0",
"project_urls": null,
"split_keywords": [
"python",
" distributed",
" lock",
" rds",
" sql",
" redis",
" replicas",
" kubernetes"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "1562643c018aa058b2f13b78ae23c105342bc8c0e0d7b78b644ba530e7e6b964",
"md5": "442853e2ecfe5dde09e71e2b04848e91",
"sha256": "4f6b0d827a04d4a7c5942ebd74f58722785108368e628d26dab757a74797b9b9"
},
"downloads": -1,
"filename": "python_distributed_locking-1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "442853e2ecfe5dde09e71e2b04848e91",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 4155,
"upload_time": "2025-01-09T07:34:48",
"upload_time_iso_8601": "2025-01-09T07:34:48.316840Z",
"url": "https://files.pythonhosted.org/packages/15/62/643c018aa058b2f13b78ae23c105342bc8c0e0d7b78b644ba530e7e6b964/python_distributed_locking-1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "7100b609252e2fe86d5ad103be67bddedf058037302f112bc6fff1329b5face2",
"md5": "d513a39df0f7b28e2f8dcb7e8ce9399a",
"sha256": "64bfc34b7ba4172d5791312f60483e388782a951ec74721b92c2663915e52cc6"
},
"downloads": -1,
"filename": "python_distributed_locking-1.0.tar.gz",
"has_sig": false,
"md5_digest": "d513a39df0f7b28e2f8dcb7e8ce9399a",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 3701,
"upload_time": "2025-01-09T07:34:50",
"upload_time_iso_8601": "2025-01-09T07:34:50.842533Z",
"url": "https://files.pythonhosted.org/packages/71/00/b609252e2fe86d5ad103be67bddedf058037302f112bc6fff1329b5face2/python_distributed_locking-1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-01-09 07:34:50",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "python-distributed-locking"
}