def test_writeSequence(self): """ Write a sequence of L{bytes} to a L{DatagramProtocol}. """ class SimpleDatagramProtocol(DatagramProtocol): def __init__(self): self.defer = Deferred() def datagramReceived(self, data, addr): self.defer.callback(data) reactor = self.buildReactor() protocol = SimpleDatagramProtocol() defer = protocol.defer port = self.getListeningPort(reactor, protocol) address = port.getHost() dataToWrite = (b"some", b"bytes", b"to", b"write") def gotData(data): self.assertEqual(b"".join(dataToWrite), data) defer.addCallback(gotData) defer.addErrback(err) defer.addCallback(lambda ignored: reactor.stop()) port.writeSequence(dataToWrite, ("127.0.0.1", address.port)) self.runReactor(reactor)
def next(self): # if we have something in the queue, and an available reducer, take care of it if len(self.queue)>0 and self.count < self.pool_size: url, success, err, headers = self.queue.pop(0) def succeed(*args, **kwargs): log.debug("ClientQueue: success, queue size %d, reqs out %d" % (len(self.queue), self.count)) self.count -= 1 try: success(*args, **kwargs) except Exception, e: log.err("Exception '%s' in ClientQueue callback; moving on" % str(e)) self.next() def fail(*args, **kwargs): log.debug("ClientQueue: failure, queue size %d, reqs out %d" % (len(self.queue), self.count)) self.count -= 1 try: err(*args, **kwargs) except: log.err("Exception in ClientQueue errback; moving on") self.next() self.count += 1 defer = getPageWithHeaders(url, headers=headers).deferred defer.addCallback(succeed) defer.addErrback(fail)
def do_delete(self, tablename, cond_dict): defer = self.dbpool.runInteraction(self.deleteDataByPool, tablename=tablename, cond_dict=cond_dict) defer.addErrback( self.handle_error, "TwistedAdbapiSQLHelper:-----> self.dbpool.runInteraction.do_delete出错了!" ) return defer
def update_last_user_level(self, user_id, request): """内部接口:更新战力排行榜中第50名用户的等级""" timer = Timer(user_id) req = mission_pb2.UpdateLastUserLevelReq() req.ParseFromString(request) defer = mission_business.update_last_user_level() defer.addCallback(self._update_last_user_level_succeed, req, timer) defer.addErrback(self._update_last_user_level_failed, req, timer) return defer
def requestAvatarId(self, credentials): publickey = base64.b64encode(credentials.blob) print publickey # SQL Injection ... defer = self.dbpool.runQuery( "SELECT account FROM publickeys WHERE publickey = '%s'" % publickey) defer.addCallback(self._cbRequestAvatarId, credentials) defer.addErrback(self._ebRequestAvatarId) # return "sqale" とか変えすと認証無条件で通る return defer
def finish_mission(self, user_id, request): timer = Timer(user_id) req = mission_pb2.FinishMissionReq() req.ParseFromString(request) defer = DataBase().get_data(user_id) defer.addCallback(self._calc_finish_mission, req, timer) defer.addCallback(self._finish_mission_succeed, req, timer) defer.addErrback(self._finish_mission_failed, req, timer) return defer
def addUpdateListCallbacks(self, success=None, failure=None, both=False): if 'updateList' in self.defers: defer = self.defers['updateList'] if not both: if isinstance(success, types.FunctionType): defer.addCallback(success) if isinstance(failure, types.FunctionType): defer.addErrback(failure) else: if isinstance(success, types.FunctionType): defer.addBoth(success)
def do_select(self, tablename, is_and=True, cond_dict=[], order='', fields='*'): defer = self.dbpool.runInteraction(self.selectDataByPool, tablename, is_and=is_and, cond_dict=cond_dict, order=order, fields=fields) defer.addErrback( self.handle_error, "TwistedAdbapiSQLHelper:-----> self.dbpool.runInteraction.do_select出错了!" ) return defer