# 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 pythonLock
```
# Please check your database connection before passing it to module
## use with mysql lock
```
from pythonLock 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
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 pythonLock 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
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": "pythonLock",
"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/b3/06/508677d535f82b41c80ae6a49b63f92a616ce9ad95e619d6a10545b45c83/pythonlock-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 pythonLock\n```\n# Please check your database connection before passing it to module\n## use with mysql lock\n```\n\nfrom pythonLock 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\nstart_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 pythonLock 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\nstart_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": "8782a16ca78f7fdaf0bf1ba35d793bd156e3904456a7618d515f46b753a28a1c",
"md5": "dee3ebe6dd2688b73fb3743f57f86133",
"sha256": "db4eb04159d50140a1d6a9279ba57de8170d5194854fabf354fde799f8c49148"
},
"downloads": -1,
"filename": "pythonLock-1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "dee3ebe6dd2688b73fb3743f57f86133",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 3885,
"upload_time": "2025-01-09T07:43:05",
"upload_time_iso_8601": "2025-01-09T07:43:05.598211Z",
"url": "https://files.pythonhosted.org/packages/87/82/a16ca78f7fdaf0bf1ba35d793bd156e3904456a7618d515f46b753a28a1c/pythonLock-1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b306508677d535f82b41c80ae6a49b63f92a616ce9ad95e619d6a10545b45c83",
"md5": "2ceb7c55cc7caca60257471694dddb55",
"sha256": "590a9a6b0d0e194d4f0683b131870e70c02a0c0c71885854e511d1d458af044d"
},
"downloads": -1,
"filename": "pythonlock-1.0.tar.gz",
"has_sig": false,
"md5_digest": "2ceb7c55cc7caca60257471694dddb55",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 3665,
"upload_time": "2025-01-09T07:43:08",
"upload_time_iso_8601": "2025-01-09T07:43:08.227066Z",
"url": "https://files.pythonhosted.org/packages/b3/06/508677d535f82b41c80ae6a49b63f92a616ce9ad95e619d6a10545b45c83/pythonlock-1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-01-09 07:43:08",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "pythonlock"
}