• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Python defer.DeferredLock类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Python中twisted.internet.defer.DeferredLock的典型用法代码示例。如果您正苦于以下问题:Python DeferredLock类的具体用法?Python DeferredLock怎么用?Python DeferredLock使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



在下文中一共展示了DeferredLock类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。

示例1: Client

class Client(object):
    def __init__(self, specFilename, exchange='signals'):
        self.exchange = exchange
        spec = txamqp.spec.load(specFilename)

        delegate = TwistedDelegate()
        self.clientConnected = ClientCreator(reactor, AMQClient,
                                             delegate=delegate, vhost="/",
                                     spec=spec).connectTCP("localhost", 5672)
        self.conn = None
        self.chan = None
        self.finishLock = DeferredLock()

    @inlineCallbacks
    def finishChannelOpen(self):
        yield self.finishLock.acquire()
        if self.conn is None:
            print "opening connection for", self
            self.conn = yield self.clientConnected

            authentication = {"LOGIN": "guest", "PASSWORD": "guest"}
            yield self.conn.start(authentication)

        if self.chan is None:
            self.chan = yield self.conn.channel(1)
            yield self.chan.channel_open()
            yield self.newChan()
            print "made channel for", self
        self.finishLock.release()
            
    def newChan(self):
        # called once when the new channel is opened
        return succeed(None)
开发者ID:drewp,项目名称:magma,代码行数:33,代码来源:mqclient.py


示例2: NotificationConnector

class NotificationConnector(object):
    """Provide ready-to-use AMQP channels."""

    def __init__(self, service, clock=reactor):
        """
        @param service: An object implementing the same whenConnected() API as
            the twisted.application.internet.ClientService class.
        @param clock: An object implementing IReactorTime.
        """
        self._service = service
        self._clock = clock
        self._channel = None
        self._channel_lock = DeferredLock()

    @inlineCallbacks
    def __call__(self):
        """
        @return: A deferred firing with a ready-to-use txamqp.protocol.Channel.
        """
        # Serialize calls, in order to setup new channels only once.
        yield self._channel_lock.acquire()
        try:
            if self._channel and self._channel.client.closed:
                # If we have a client but it's closed, let's wait for it to be
                # fully disconnected and spin a reactor iteration to give
                # change to the AMQClient.connectionLost callback chain to
                # settle (in particular our ClientService will be notified and
                # will start connecting again).
                yield self._channel.client.disconnected.wait()
                yield deferLater(self._clock, 0, lambda: None)

            client = yield self._service.whenConnected()
            channel = yield client.channel(1)
            # Check if we got a new channel, and initialize it if so.
            if channel is not self._channel:
                self._channel = channel
                yield self._channel.channel_open()
                # This tells the broker to deliver us at most one message at
                # a time to support using multiple processes (e.g. in a
                # load-balanced/HA deployment). If NotificationSource.get()
                # gets called against the same UUID first by process A and then
                # when it completes by process B, we're guaranteed that process
                # B will see the very next message in the queue, because
                # process A hasn't fetched any more messages than the one it
                # received. See #729140.
                yield self._channel.basic_qos(prefetch_count=1)
        finally:
            self._channel_lock.release()
        returnValue(self._channel)
开发者ID:CanonicalLtd,项目名称:txlongpoll,代码行数:49,代码来源:notification.py


示例3: emailer

class emailer( LabradServer ):
    name = 'Email Server'
    
    @inlineCallbacks
    def initServer( self ):
        self.username, self.fromaddr, self.password = yield self.getInfoReg()
        self.password = base64.b64decode(self.password)
        self.toaddrs = {}
        self.smtp = 'smtp.gmail.com:587'
        self.sending = DeferredLock()
    
    @inlineCallbacks
    def getInfoReg(self):
        reg = self.client.registry
        yield reg.cd(['Servers','Email Server'])
        username = yield reg.get('username')
        fromaddr = yield reg.get('address')
        password = yield reg.get('password')
        returnValue([username,fromaddr,password])
        
    @setting(0, "Set Recipients", recepients = '*s', returns = '')
    def setRecepients(self, c, recepients):
        """Set the recipients of the email as a list of strings of email addresses"""
        self.toaddrs[c.ID] = recepients
    
    @setting(1, "Send", subject = 's', message = 's', returns = '')
    def selectDP(self, c, subject, message):
        """Select Double Pass in the current context"""
        if not self.toaddrs[c.ID]: raise Exception("Recipients not set")
        yield self.sending.acquire()  
        session = smtplib.SMTP(self.smtp)
        session.starttls()
        session.login(self.username,self.password)
        toaddrs = self.toaddrs[c.ID]
        msg = MIMEMultipart()
        msg['From'] = self.fromaddr
        msg['To'] = COMMASPACE.join(toaddrs)
        msg['Subject'] = subject
        msg.attach(MIMEText(message, 'plain'))    
        session.sendmail(self.fromaddr, toaddrs, msg.as_string())
        session.quit()
        self.sending.release()
    
    def initContext(self, c):
        """Initialize a new context object."""
        pass
    
    def expireContext(self, c):
        del(self.toaddrs[c.ID])
开发者ID:HaeffnerLab,项目名称:HaeffnerLabLattice,代码行数:49,代码来源:emailer.py


示例4: Pulser_729

class Pulser_729(LabradServer):
    
    name = 'Pulser_729'
       
    def initServer(self):
        self.api  = api()
        self.inCommunication = DeferredLock()
        self.initializeBoard()
    
    def initializeBoard(self):
        connected = self.api.connectOKBoard()
        if not connected:
            raise Exception("Pulser Not Found")
    
    @setting(0, 'Reset DDS', returns = '')
    def resetDDS(self , c):
        """
        Reset the ram position to 0
        """
        yield self.inCommunication.acquire()
        yield deferToThread(self.api.resetAllDDS)
        self.inCommunication.release()
        
    @setting(1, "Program DDS", program = '*(is)', returns = '')
    def programDDS(self, c, program):
        """
        Programs the DDS, the input is a tuple of channel numbers and buf objects for the channels
        """
        yield self.inCommunication.acquire()
        yield deferToThread(self._programDDSSequence, program)
        self.inCommunication.release()
    
    @setting(2, "Reinitialize DDS", returns = '')
    def reinitializeDDS(self, c):
        """
        Reprograms the DDS chip to its initial state
        """
        yield self.inCommunication.acquire()
        yield deferToThread(self.api.initializeDDS)
        self.inCommunication.release()
    
    def _programDDSSequence(self, program):
        '''takes the parsed dds sequence and programs the board with it'''
        for chan, buf in program:
            self.api.setDDSchannel(chan)
            self.api.programDDS(buf)
        self.api.resetAllDDS()
    
    def wait(self, seconds, result=None):
        """Returns a deferred that will be fired later"""
        d = Deferred()
        reactor.callLater(seconds, d.callback, result)
        return d
开发者ID:ahusain,项目名称:Haeffner-Lab-LabRAD-Tools,代码行数:53,代码来源:pulser_729.py


示例5: acquire

    def acquire(self, timeout=None):
        """
        This method operates the same as :meth:`DeferredLock.acquire` does
        except it requires a timeout argument.

        :param int timeout:
            The number of seconds to wait before timing out.

        :raises LockTimeoutError:
            Raised if the timeout was reached before we could acquire
            the lock.
        """
        assert timeout is None \
            or isinstance(timeout, (int, float)) and timeout > 0

        lock = DeferredLock.acquire(self)
        if timeout is None:
            return lock

        # Schedule a call to trigger finished.errback() which will raise
        # an exception.  If lock finishes first however cancel the timeout
        # and unlock the lock by calling finished.
        finished = Deferred()
        lock.addCallback(
            self._cancel_timeout,
            reactor.callLater(timeout, self._timeout, finished))
        lock.addCallback(self._call_callback, finished)

        return finished
开发者ID:xlhtc007,项目名称:pyfarm-agent,代码行数:29,代码来源:utility.py


示例6: __init__

    def __init__(self, omegleProto):
        """
        Initializes an L{OmegleBot}.

        @param omegleProto: an instance of a protocol that implements:
            * typingCallback: when the stranger is typing
            * stoppedTypingCallback: stranger no longer typing
            * disconnectCallback: stranger OR bot has disconnected
            * messageCallback: when the stranger has sent us a message
            * recaptchaFailedCallback: when our submitted captcha fails
            * recaptchaRequiredCallback: when omegle requires a captcha
            * connectCallback: when we have found a stranger
            * waitingCallback: when we are waiting for a stranger
        """

        for callback_name in ('typingCallback',
                              'stoppedTypingCallback',
                              'disconnectCallback',
                              'messageCallback',
                              'recaptchaFailedCallback',
                              'recaptchaRequiredCallback',
                              'connectCallback',
                              'waitingCallback',
                             ):
            setattr(self, callback_name, getattr(omegleProto, callback_name, None))

        self.status = DISCONNECTED
        self.server = None
        self.id = None
        self.lock = DeferredLock()
        self.activeRequests = set()
        self.challenge = None
        self.image = None
开发者ID:GitMiku,项目名称:omegle-to-irc,代码行数:33,代码来源:omegletwist.py


示例7: initServer

 def initServer(self):
     self.api  = api()
     self.channelDict = hardwareConfiguration.channelDict
     self.collectionTime = hardwareConfiguration.collectionTime
     self.collectionMode = hardwareConfiguration.collectionMode
     self.sequenceType = hardwareConfiguration.sequenceType
     self.isProgrammed = hardwareConfiguration.isProgrammed
     self.timeResolution = float(hardwareConfiguration.timeResolution)
     self.ddsDict = hardwareConfiguration.ddsDict
     self.timeResolvedResolution = hardwareConfiguration.timeResolvedResolution
     self.remoteChannels = hardwareConfiguration.remoteChannels
     self.collectionTimeRange = hardwareConfiguration.collectionTimeRange
     self.sequenceTimeRange = hardwareConfiguration.sequenceTimeRange
     self.haveSecondPMT = hardwareConfiguration.secondPMT
     self.haveDAC = hardwareConfiguration.DAC
     self.inCommunication = DeferredLock()
     self.clear_next_pmt_counts = 0
     self.hwconfigpath = os.path.dirname(inspect.getfile(hardwareConfiguration))
     print self.hwconfigpath
     #LineTrigger.initialize(self)
     #self.initializeBoard()
     #yield self.initializeRemote()
     #self.initializeSettings()
     #yield self.initializeDDS()
     self.ddsLock = True
     self.listeners = set()
开发者ID:Arvad,项目名称:YbDDSControl,代码行数:26,代码来源:DummyPulser.py


示例8: __init__

    def __init__(self, config=None):
        ApplicationSession.__init__(self, config)

        global live
        live = self

        self.logger = logging.getLogger('Live')

        self.logger.info("Config: %s", config)

        self.account_id = config.extra['authid']
        self.secret = config.extra['secret']

        if '-' not in self.account_id:
            self.account_id = "local-%s" % self.account_id

        self.authid = '%s:%s' % (self.account_id, self.secret[-7:])

        self.joined = False
        self.lock = DeferredLock()

        self.checks = {}
        self.workers = {}

        self.CallOptions = CallOptions()
开发者ID:checkmyws,项目名称:checkmyws-python,代码行数:25,代码来源:live.py


示例9: __init__

 def __init__(self, priority):
     self._lock = DeferredLock()
     self.priority = str(priority)
     self.is_shutdown = False
     self.state_pub = state_publisher.StatePublisher(())
     self.flush()
     reactor.addSystemEventTrigger('before', 'shutdown', self._shutdown)
开发者ID:PR2,项目名称:linux_networking,代码行数:7,代码来源:ip_rule.py


示例10: __init__

    def __init__(self, publisher, ignoreBuilders=None, send_logs=False,
            max_connect_time=600, max_idle_time=300, heartbeat_time=900):
        self.publisher = publisher
        self.send_logs = send_logs

        self.ignoreBuilders = []
        if ignoreBuilders:
            for i in ignoreBuilders:
                if isinstance(i, basestring):
                    self.ignoreBuilders.append(re.compile(i))
                else:
                    assert hasattr(i, 'match') and callable(i.match)
                    self.ignoreBuilders.append(i)
        self.watched = []

        self.max_connect_time = max_connect_time
        self.max_idle_time = max_idle_time
        self.heartbeat_time = heartbeat_time

        self._disconnect_timer = None
        self._idle_timer = None

        # Lock to make sure only one thread is active at a time
        self._thread_lock = DeferredLock()

        # Set up heartbeat
        self._heartbeat_loop = LoopingCall(self.heartbeat)

        StatusPush.__init__(self, PulseStatus.pushEvents, filter=False)
开发者ID:lsblakk,项目名称:buildbotcustom,代码行数:29,代码来源:pulse.py


示例11: __init__

 def __init__(self, cxn, context, dataset):
     super(Dataset, self).__init__()
     self.accessingData = DeferredLock()
     self.cxn = cxn
     self.context = context # context of the first dataset in the window
     self.dataset = dataset
     self.data = None
     self.setupDataListener(self.context)
开发者ID:HaeffnerLab,项目名称:sqip,代码行数:8,代码来源:pygrapherliveasync_matplotlib.py


示例12: initServer

 def initServer(self):
     self.api_dac  = api_dac()
     self.inCommunication = DeferredLock()
     connected = self.api_dac.connectOKBoard()
     if not connected:
         raise Exception ("Could not connect to DAC")
     self.d = yield self.initializeDAC()
     self.listeners = set()     
开发者ID:HaeffnerLab,项目名称:HaeffnerLabLattice,代码行数:8,代码来源:dac.py


示例13: __init__

 def __init__(self, name, conf):
     _log.info("CF_INIT %s", name)
     self.name, self.conf = name, conf
     self.channel_dict = defaultdict(list)
     self.iocs = dict()
     self.client = None
     self.currentTime = getCurrentTime
     self.lock = DeferredLock()
开发者ID:mskinner5278,项目名称:recsync,代码行数:8,代码来源:cfstore.py


示例14: __init__

    def __init__(self, consumer):
        self.consumer = consumer
        assert IConsumer.implementedBy(consumer.__class__)

        self._producers = []

        self._sendingLock = DeferredLock()
        self._localHeaderLength = 0
        self._centralDirectoryLength = 0
开发者ID:unshift,项目名称:zippy2,代码行数:9,代码来源:stream.py


示例15: initServer

 def initServer(self):
     self.channelDict =  hardwareConfiguration.channelDict
     self.collectionTime = hardwareConfiguration.collectionTime
     self.collectionMode = hardwareConfiguration.collectionMode
     self.sequenceType = hardwareConfiguration.sequenceType
     self.isProgrammed = hardwareConfiguration.isProgrammed
     self.inCommunication = DeferredLock()
     self.connectOKBoard()
     self.listeners = set()
开发者ID:HaeffnerLab,项目名称:sqip,代码行数:9,代码来源:pulser_ok.py


示例16: __init__

    def __init__(self):
        # so parts of this instance are accessible elsewhere
        assert "agent" not in config
        config["agent"] = self
        self.services = {}
        self.register_shutdown_events = False
        self.last_free_ram_post = time.time()
        self.repeating_call_counter = {}
        self.shutdown_timeout = None
        self.post_shutdown_lock = DeferredLock()
        self.stop_lock = DeferredLock()
        self.reannounce_lock = utility.TimedDeferredLock()
        self.stopped = False

        # Register a callback so self.shutdown_timeout is set when
        # "shutting_down" is set or modified.
        config.register_callback(
            "shutting_down", self.callback_shutting_down_changed)
开发者ID:xlhtc007,项目名称:pyfarm-agent,代码行数:18,代码来源:service.py


示例17: MKSPDR2000Wrapper

class MKSPDR2000Wrapper(DeviceWrapper):
    @inlineCallbacks
    def connect(self, server, port):
        '''Connect to the MKS PDR2000'''
        print('Connecting to "%s" on port "%s"...' %(server.name, port))

        self.server = server
        self.ctx = server.context()
        self.port = port
        p = self.packet()
        p.open(port)
        # The following parameters were obtained from the MKS PDR2000 manual.
        p.baudrate(9600L)
        p.stopbits(1L)
        p.bytesize(8L)
        p.parity('N')
        p.timeout(0.1 * u.s)
        # Clear out the Rx buffer. This is necessary for some devices.
        yield p.send()
    
    def packet(self):
        '''Create a new packet in our private context'''
        return self.server.packet(context=self.ctx)

    def shutdown(self):
        '''Disconnect from teh serial port when we shut down.'''
        return self.packet().close().send()

    def rw_line(self, code):
        # Don't allow two concurrent read/write calls.
        
        self._lock = DeferredLock()

        return self._lock.run(partial(self._rw_line, code))

    @inlineCallbacks
    def _rw_line(self, code):
        '''Write data to the device.'''
        yield self.server.write_line(code, context=self.ctx)
        time.sleep(0.2)
        ans = yield self.server.read(context=self.ctx)
        returnValue(ans)
        
    @inlineCallbacks
    def getUnits(self):
        yield self.write_line('u')
        time.sleep(0.5)
        ans = yield self.read_line()
        returnValue(ans)
    def toFloat(self, val):
        try:
            if val == 'Off' or val == 'Low':
                return np.nan
            return float(val)
        except:
            return None
开发者ID:McDermott-Group,项目名称:servers,代码行数:56,代码来源:MKSPDR2000.py


示例18: __init__

 def __init__(self, ident, signals):
     self.pause_lock = DeferredLock()
     self.pause_requests = []
     self.continue_requests = []
     self.already_called_continue = False
     self.status = 'Ready'
     self.percentage_complete = 0.0
     self.should_stop = False
     self.ident = ident
     self.signals = signals
开发者ID:HaeffnerLab,项目名称:Haeffner-Lab-LabRAD-Tools,代码行数:10,代码来源:script_status.py


示例19: add_scan_to_queue

 def add_scan_to_queue(self, scan, priority = 'Normal'):
     #increment counter
     scan_id = self.scan_ID_counter
     self.scan_ID_counter += 1
     #add to queue
     if priority == 'Normal':
         order = self.queue.put_last(1, (scan_id, scan,  1))
     elif priority == 'First in Queue':
         order = self.queue.put_first(1, (scan_id, scan, 1))
     elif priority == 'Pause All Others':
         order = self.queue.put_last(0, (scan_id, scan, 0))
     else: 
         raise Exception ("Unrecognized priority type")
     self.signals.on_queued_new_script((scan_id, scan.name, order))
     d = DeferredLock()
     d.acquire()
     self.running_locks[scan_id] = d
     self.launch_scripts()
     return scan_id
开发者ID:HaeffnerLab,项目名称:Haeffner-Lab-LabRAD-Tools,代码行数:19,代码来源:scheduler.py


示例20: __init__

 def __init__(self, service, clock=reactor):
     """
     @param service: An object implementing the same whenConnected() API as
         the twisted.application.internet.ClientService class.
     @param clock: An object implementing IReactorTime.
     """
     self._service = service
     self._clock = clock
     self._channel = None
     self._channel_lock = DeferredLock()
开发者ID:CanonicalLtd,项目名称:txlongpoll,代码行数:10,代码来源:notification.py



注:本文中的twisted.internet.defer.DeferredLock类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Python defer.DeferredQueue类代码示例发布时间:2022-05-27
下一篇:
Python defer.DeferredList类代码示例发布时间:2022-05-27
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap