diff options
Diffstat (limited to 'vio')
-rw-r--r-- | vio/vio/pub/config/config.py | 11 | ||||
-rwxr-xr-x | vio/vio/pub/utils/share_lock.py | 82 |
2 files changed, 0 insertions, 93 deletions
diff --git a/vio/vio/pub/config/config.py b/vio/vio/pub/config/config.py index 8f18ad5..9b4d6c8 100644 --- a/vio/vio/pub/config/config.py +++ b/vio/vio/pub/config/config.py @@ -28,18 +28,7 @@ AAI_SCHEMA_VERSION = "v13" AAI_USERNAME = 'AAI' AAI_PASSWORD = 'AAI' -# [REDIS] -REDIS_HOST = '127.0.0.1' -REDIS_PORT = '6379' -REDIS_PASSWD = '' - # [MDC] SERVICE_NAME = "multicloud-vio" FORWARDED_FOR_FIELDS = ["HTTP_X_FORWARDED_FOR", "HTTP_X_FORWARDED_HOST", "HTTP_X_FORWARDED_SERVER"] -# [mysql] -# DB_IP = '127.0.0.1' -# DB_PORT = 3306 -# DB_NAME = 'multivimvio' -# DB_USER = 'root' -# DB_PASSWD = 'password' diff --git a/vio/vio/pub/utils/share_lock.py b/vio/vio/pub/utils/share_lock.py deleted file mode 100755 index 0e015c5..0000000 --- a/vio/vio/pub/utils/share_lock.py +++ /dev/null @@ -1,82 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -# Copyright (c) 2017-2018 VMware, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - -import time - -import redis - -from vio.pub.config.config import REDIS_HOST, REDIS_PORT, REDIS_PASSWD - - -class SharedLock: - def __init__(self, lock_key, host=REDIS_HOST, port=REDIS_PORT, - password=REDIS_PASSWD, db=9, lock_timeout=5 * 60): - self.lock_key = lock_key - self.lock_timeout = lock_timeout - self.redis = redis.Redis(host=host, port=port, - db=db, password=password) - self.acquire_time = -1 - - def acquire(self): - begin = now = int(time.time()) - while (now - begin) < self.lock_timeout: - - result = self.redis.setnx( - self.lock_key, now + self.lock_timeout + 1) - if result == 1 or result is True: - self.acquire_time = now - return True - - current_lock_timestamp = self.redis.get(self.lock_key) - if not current_lock_timestamp: - time.sleep(1) - continue - - current_lock_timestamp = int(current_lock_timestamp) - - if now > current_lock_timestamp: - next_lock_timestamp = self.redis.getset( - self.lock_key, now + self.lock_timeout + 1) - if not next_lock_timestamp: - time.sleep(1) - continue - next_lock_timestamp = int(next_lock_timestamp) - - if next_lock_timestamp == current_lock_timestamp: - self.acquire_time = now - return True - else: - time.sleep(1) - continue - return False - - def release(self): - now = int(time.time()) - if now > self.acquire_time + self.lock_timeout: - # key expired, do nothing and let other clients handle it - return - self.acquire_time = None - self.redis.delete(self.lock_key) - - -def do_biz_with_share_lock(lock_name, callback): - lock = SharedLock(lock_name) - try: - if not lock.acquire(): - raise Exception(lock_name + " timeout") - callback() - except Exception as e: - raise e - finally: - lock.release() |