コード例 #1
0
 def __init__(self, sample):
     self.sample = sample
     self.counter = AtomicLong(0)
     self.minimum = AtomicLong(sys.maxsize)
     self.maximum = AtomicLong(-sys.maxsize - 1)
     self.sum = AtomicLong(0)
     self.var = AtomicLongArray([-1, 0])
コード例 #2
0
ファイル: Stat.py プロジェクト: muhairong/TinyURL
class Stat(object):
    gen_tasks = AtomicLong(0)
    finished_tasks = AtomicLong(0)
    task_queue = queue.Queue()
    # Each result contains several fields
    # 1. TaskID
    # 2. TimePoints: create time, send time, response time
    # 3. Succ
    result_queue = queue.Queue()
コード例 #3
0
    def __init__(self, average_class=EWMA):
        self.counter = AtomicLong(0)
        self.start_time = now()
        self.last_tick = AtomicLong(self.start_time)

        self.interval = EWMA.INTERVAL
        self.m1_rate = EWMA.m1()
        self.m5_rate = EWMA.m5()
        self.m15_rate = EWMA.m15()
コード例 #4
0
ファイル: ewma.py プロジェクト: yunsonbai/metrology
    def __init__(self, alpha, interval):
        self.alpha = alpha
        self.interval = interval

        self.initialized = False
        self._rate = 0.0
        self._uncounted = AtomicLong(0)
コード例 #5
0
ファイル: test_atomic.py プロジェクト: schuhschuh/atomic
    def test_compare_and_swap(self):
        atomic = AtomicLong(1000)
        swapped = atomic.compare_and_swap(1000, 1001)
        self.assertEqual(1001, atomic.value)
        self.assertEqual(True, swapped)

        swapped = atomic.compare_and_swap(1000, 1024)
        self.assertEqual(1001, atomic.value)
        self.assertEqual(False, swapped)
コード例 #6
0
 def __init__(self, reservoir_size, alpha):
     self.values = []
     self.next_scale_time = AtomicLong(0)
     self.alpha = alpha
     self.reservoir_size = reservoir_size
     self.lock = RLock()
     self.rescale_threshold = \
         ExponentiallyDecayingSample.calculate_rescale_threshold(alpha)
     self.clear()
コード例 #7
0
class ToggleGauge(Gauge):
    _value = AtomicLong(1)

    @property
    def value(self):
        try:
            return self._value.value
        finally:
            self._value.value = 0
コード例 #8
0
    def __init__(self, service_meta, client_id=None):
        self.service_meta = service_meta
        self.client_id = client_id
        if not self.client_id:
            self.client_id = gen_uuid()

        if service_meta.serverimpl != "rabbitmq":
            raise RuntimeError("serverimpl {} not implemented yet".format(
                service_meta.serverimpl))

        self._sender = RabbitmqClientSender(service_meta)
        if service_meta.callmode != "notify":
            # need a queue to receive response
            self._receiver = RabbitmqClientReceiver(self.client_id)
        else:
            self._receiver = None

        if service_meta.coder != "mail":
            raise RuntimeError("coder {} is not supported yet".format(
                service_meta.coder))

        self.requestid_base = AtomicLong(0)
        self.running = True
コード例 #9
0
ファイル: signal.py プロジェクト: openhive-network/hivemind
"""Hive signal handling."""

import logging

from signal import SIGINT
from atomic import AtomicLong

log = logging.getLogger(__name__)

EXCEPTION_THROWN = AtomicLong(0)
FINISH_SIGNAL_DURING_SYNC = AtomicLong(0)


def finish_signals_handler(signal, frame):
    global FINISH_SIGNAL_DURING_SYNC
    FINISH_SIGNAL_DURING_SYNC += 1
    log.info("""
                  **********************************************************
                  CAUGHT {}. PLEASE WAIT... PROCESSING DATA IN QUEUES...
                  **********************************************************
    """.format("SIGINT" if signal == SIGINT else "SIGTERM"))


def set_exception_thrown():
    global EXCEPTION_THROWN
    EXCEPTION_THROWN += 1


def can_continue_thread():
    return EXCEPTION_THROWN.value == 0 and FINISH_SIGNAL_DURING_SYNC.value == 0
コード例 #10
0
 def __init__(self, reservoir_size):
     self.counter = AtomicLong(0)
     self.values = [0] * reservoir_size
コード例 #11
0
 def __init__(self, service_meta):
     self.requestid_gen = AtomicLong(0)
     pass
コード例 #12
0
class StopSignal(object):
    stop_workers = AtomicLong(0)
コード例 #13
0
    def __init__(self, service_meta, **kwargs):
        self.raise_if_connect_error = kwargs.get('raise_if_connect_error',True) #add by wxt 2015-12-16 如果初始化失败是否raise异常
        self.running = False
        try:
            self.service_meta = service_meta
            # atexit
            if self.service_meta.callmode == "notify":
                atexit.register(self.batch_notify_flush)

            self.client_id = kwargs.get("client_id")
            if not self.client_id:
                self.client_id = gen_uuid()

            self.client_id = '_client.{}.{}'.format(self.service_meta.name,self.client_id)

            if service_meta.serverimpl == "rabbitmq":
                from . import babelrabbitmq
                self.impl = babelrabbitmq
            elif service_meta.serverimpl == "redis":
                from . import babelredis
                self.impl = babelredis
            else:
                raise RuntimeError("serverimpl {} not implemented yet".format(service_meta.serverimpl))

            if "sdc" not in self.service_meta.options:
                raise RuntimeError("sdc not in service meta")
            self.sdc = self.service_meta.options.get("sdc", "")

            if "cdc" not in self.service_meta.options:
                raise RuntimeError("cdc not in service meta")
            self.cdc = self.service_meta.options.get("cdc", "")

            if "," in self.service_meta.options["sdc"] and self.service_meta.callmode != "notify":
                raise RuntimeError("only notify supports multiple data center")

            self._sender = self.impl.get_client_sender(service_meta, **kwargs)
            if service_meta.callmode != "notify":
                # need a queue to receive response
                self._receiver = self.impl.get_client_receiver(service_meta, self.client_id, **kwargs)
            else:
                self._receiver = None

            if service_meta.coder != "mail":
                raise RuntimeError("coder {} is not supported yet".format(service_meta.coder))

            self.requestid_base = AtomicLong(0)
            self.request_cache = RequestCache()
            self.running = True
            self.response_task = None

            self.metrics_tags = {
                "service": service_meta.name,
                "delivery": service_meta.delivermode,
                "call": service_meta.callmode,
                "impl": service_meta.serverimpl,
                "clientid": self.client_id,
                "sdc": self.sdc,
                "cdc": self.cdc
            }

            # caching requests for batch_notify
            self.batch_cache = list()
            self.running = True
        except Exception,e:
            if self.raise_if_connect_error:
                print e
                raise RuntimeError('babel connect error')
コード例 #14
0
ファイル: derive.py プロジェクト: yunsonbai/metrology
 def __init__(self, average_class=EWMA):
     self.last = AtomicLong(0)
     super(Derive, self).__init__(average_class)
コード例 #15
0
ファイル: test_atomic.py プロジェクト: schuhschuh/atomic
    def test_init(self):
        atomic = AtomicLong()
        self.assertEqual(0, atomic.value)

        atomic = AtomicLong(0)
        self.assertEqual(0, atomic.value)
コード例 #16
0
ファイル: test_atomic.py プロジェクト: schuhschuh/atomic
 def test_set_obj(self):
     atomic = AtomicLongArray([-1, 0])
     atomic[1] = AtomicLong(-2)
     self.assertEqual(atomic[1], -2)
コード例 #17
0
ファイル: test_atomic.py プロジェクト: schuhschuh/atomic
 def test_sub(self):
     atomic = AtomicLong(1000)
     atomic -= 1
     self.assertEqual(999, atomic.value)
コード例 #18
0
ファイル: test_atomic.py プロジェクト: schuhschuh/atomic
 def test_add(self):
     atomic = AtomicLong(1000)
     atomic += 1
     self.assertEqual(1001, atomic.value)
コード例 #19
0
ファイル: counter.py プロジェクト: yunsonbai/metrology
 def __init__(self):
     self._count = AtomicLong(0)
コード例 #20
0
ファイル: test_atomic.py プロジェクト: schuhschuh/atomic
 def test_swap(self):
     atomic = AtomicLong(1000)
     swapped = atomic.swap(1001)
     self.assertEqual(1001, atomic.value)
     self.assertEqual(1000, swapped)
コード例 #21
0
ファイル: test_atomic.py プロジェクト: schuhschuh/atomic
 def test_value(self):
     atomic = AtomicLong(0)
     atomic.value = 1
     self.assertEqual(1, atomic.value)