Initial commit: AuroraMusic monorepo
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
from typing import TYPE_CHECKING, Optional
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from redis import Redis
|
||||
|
||||
from rq.worker import Worker
|
||||
|
||||
|
||||
WORKERS_SUSPENDED = 'rq:suspended'
|
||||
|
||||
|
||||
def is_suspended(connection: 'Redis', worker: Optional['Worker'] = None):
|
||||
"""Checks whether a Worker is suspendeed on a given connection
|
||||
PS: pipeline returns a list of responses
|
||||
Ref: https://github.com/andymccurdy/redis-py#pipelines
|
||||
|
||||
Args:
|
||||
connection (Redis): The Redis Connection
|
||||
worker (Optional[Worker], optional): The Worker. Defaults to None.
|
||||
"""
|
||||
with connection.pipeline() as pipeline:
|
||||
if worker is not None:
|
||||
worker.heartbeat(pipeline=pipeline)
|
||||
pipeline.exists(WORKERS_SUSPENDED)
|
||||
return pipeline.execute()[-1]
|
||||
|
||||
|
||||
def suspend(connection: 'Redis', ttl: Optional[int] = None):
|
||||
"""
|
||||
Suspends.
|
||||
TTL of 0 will invalidate right away.
|
||||
|
||||
Args:
|
||||
connection (Redis): The Redis connection to use..
|
||||
ttl (Optional[int], optional): time to live in seconds. Defaults to `None`
|
||||
"""
|
||||
connection.set(WORKERS_SUSPENDED, 1)
|
||||
if ttl is not None:
|
||||
connection.expire(WORKERS_SUSPENDED, ttl)
|
||||
|
||||
|
||||
def resume(connection: 'Redis'):
|
||||
"""
|
||||
Resumes.
|
||||
|
||||
Args:
|
||||
connection (Redis): The Redis connection to use..
|
||||
"""
|
||||
return connection.delete(WORKERS_SUSPENDED)
|
||||
Reference in New Issue
Block a user