pip_services3_components.lock package

Submodules

Module contents

pip_services3_components.__init__

Components module initialization

copyright

Conceptual Vision Consulting LLC 2018-2019, see AUTHORS for more details.

license

MIT, see LICENSE for more details.

class pip_services3_components.lock.DefaultLockFactory

Bases: pip_services3_components.build.Factory.Factory

Creates ILock components by their descriptors.

See Factory, ILock, MemoryLock, NullLock

MemoryLockDescriptor = <pip_services3_commons.refer.Descriptor.Descriptor object>
NullLockDescriptor = <pip_services3_commons.refer.Descriptor.Descriptor object>
class pip_services3_components.lock.ILock

Bases: abc.ABC

Interface for locks to synchronize work or parallel processes and to prevent collisions.

The lock allows to manage multiple locks identified by unique keys.

acquire_lock(correlation_id: Optional[str], key: str, ttl: int, timeout: int)

Releases prevously acquired lock by its key.

Parameters
  • correlation_id – (optional) transaction id to trace execution through call chain.

  • key – a unique lock key to acquire.

  • ttl – a lock timeout (time to live) in milliseconds.

  • timeout – lock timeout

release_lock(correlation_id: Optional[str], key: str)

Releases prevously acquired lock by its key.

Parameters
  • correlation_id – (optional) transaction id to trace execution through call chain.

  • key – a unique lock key to acquire.

try_acquire_lock(correlation_id: Optional[str], key: str, ttl: int)bool

Makes a single attempt to acquire a lock by its key. It returns immediately a positive or negative result.

Parameters
  • correlation_id – (optional) transaction id to trace execution through call chain.

  • key – a unique lock key to acquire.

  • ttl – a lock timeout (time to live) in milliseconds.

Returns

lock result

class pip_services3_components.lock.Lock

Bases: pip_services3_components.lock.ILock.ILock, pip_services3_commons.config.IReconfigurable.IReconfigurable

acquire_lock(correlation_id: Optional[str], key: str, ttl: int, timeout: int)

Makes multiple attempts to acquire a lock by its key within give time interval.

Parameters
  • correlation_id – (optional) transaction id to trace execution through call chain.

  • key – a unique lock key to acquire.

  • ttl – a lock timeout (time to live) in milliseconds.

  • timeout – a lock acquisition timeout.

configure(config: pip_services3_commons.config.ConfigParams.ConfigParams)

Configures component by passing configuration parameters.

Parameters

config – configuration parameters to be set.

abstract release_lock(correlation_id: Optional[str], key: str)

Releases prevously acquired lock by its key.

Parameters
  • correlation_id – (optional) transaction id to trace execution through call chain.

  • key – a unique lock key to release.

Returns

receive null for success.

abstract try_acquire_lock(correlation_id: Optional[str], key: str, ttl: int)bool

Makes a single attempt to acquire a lock by its key. It returns immediately a positive or negative result.

Parameters
  • correlation_id – (optional) transaction id to trace execution through call chain.

  • key – a unique lock key to acquire.

  • ttl – a lock timeout (time to live) in milliseconds.

Returns

lock result

class pip_services3_components.lock.MemoryLock

Bases: pip_services3_components.lock.Lock.Lock

Lock that is used to synchronize execution within one process using shared memory.

Remember: This implementation is not suitable for synchronization of distributed processes.

### Configuration parameters ###
  • options:
    • retry_timeout: timeout in milliseconds to retry lock acquisition. (Default: 100)

Example:

lock = MemoryLock()
lock.acquire_lock("123", "key1", None, None)
# processing
lock.release_lock("123", "key1")
release_lock(correlation_id: Optional[str], key: str)

Releases the lock with the given key.

Parameters
  • correlation_id – not user.

  • key – the key of the lock that is to be released.

try_acquire_lock(correlation_id: Optional[str], key: str, ttl: int)

Makes a single attempt to acquire a lock by its key.

It returns immediately a positive or negative result.

Parameters
  • correlation_id – (optional) transaction id to trace execution through call chain.

  • key – a unique lock key to acquire.

  • ttl – a lock timeout (time to live) in milliseconds.

Returns

receives a lock result.

class pip_services3_components.lock.NullLock

Bases: pip_services3_components.lock.ILock.ILock

Dummy lock implementation that doesn’t do anything.

It can be used in testing or in situations when lock is required but shall be disabled.

acquire_lock(correlation_id: Optional[str], key: str, ttl: int, timeout: int)

Releases prevously acquired lock by its key.

Parameters
  • correlation_id – (optional) transaction id to trace execution through call chain.

  • key – a unique lock key to acquire.

  • ttl – a lock timeout (time to live) in milliseconds.

  • timeout – lock timeout

Returns

lock result

release_lock(correlation_id: Optional[str], key: str)
Parameters
  • correlation_id – (optional) transaction id to trace execution through call chain.

  • key – a unique lock key to acquire.

Returns

lock result

try_acquire_lock(correlation_id: Optional[str], key: str, ttl: int)bool

Makes a single attempt to acquire a lock by its key. It returns immediately a positive or negative result.

Parameters
  • correlation_id – (optional) transaction id to trace execution through call chain.

  • key – a unique lock key to acquire.

  • ttl – a lock timeout (time to live) in milliseconds.

Returns

lock result