def on_welcome(mc):
print('simulated on-welcome')
mc.tx_irc_client.lineRate = 0.2
if mc.nick == "irc_publisher":
d = task.deferLater(reactor, 3.0, junk_pubmsgs, mc)
d.addCallback(junk_longmsgs)
d.addCallback(junk_announce)
d.addCallback(junk_fill)
python类deferLater()的实例源码
test_irc_messaging.py 文件源码
项目:joinmarket-clientserver
作者: JoinMarket-Org
项目源码
文件源码
阅读 19
收藏 0
点赞 0
评论 0
test_irc_messaging.py 文件源码
项目:joinmarket-clientserver
作者: JoinMarket-Org
项目源码
文件源码
阅读 17
收藏 0
点赞 0
评论 0
def test_waiter(self):
print("test_main()")
#reactor.callLater(1.0, junk_messages, self.mcc)
return task.deferLater(reactor, 22, self._called_by_deffered)
test_daemon_protocol.py 文件源码
项目:joinmarket-clientserver
作者: JoinMarket-Org
项目源码
文件源码
阅读 20
收藏 0
点赞 0
评论 0
def test_waiter(self):
return task.deferLater(reactor, 12, self._called_by_deffered)
test_daemon_protocol.py 文件源码
项目:joinmarket-clientserver
作者: JoinMarket-Org
项目源码
文件源码
阅读 21
收藏 0
点赞 0
评论 0
def test_waiter(self):
return task.deferLater(reactor, 5, self._called_by_deffered)
def render_GET(self, request):
path = request.path.decode()
request.setHeader("Content-Type", "text/plain; charset=UTF-8")
if path == '/metrics':
if not request.args.get('target', [None])[0]:
request.setResponseCode(404)
return 'No target defined\r\n'.encode()
d = deferLater(reactor, 0, lambda: request)
d.addCallback(self.generate_latest_target)
d.addErrback(self.errback, request)
return NOT_DONE_YET
else:
request.setResponseCode(404)
return '404 Not Found'.encode()
def test_blocking_call(self):
"""
Check if the reactor thread is properly blocked by a function marked as such.
"""
@blocking_call_on_reactor_thread
@inlineCallbacks
def waiter():
# 'Release' our claim on the reactor thread.
# blocking_call_on_reactor_thread should prevent anything else being scheduled though.
yield deferLater(reactor, 0.01, lambda: None)
waiter.variable += 1
returnValue(waiter.variable)
@blocking_call_on_reactor_thread
def quicker():
# Immediately use the reactor thread and return
waiter.variable += 1
return succeed(waiter.variable)
waiter.variable = 1
# 'Release' the reactor thread and increment waiter.variable
# If release didn't allow other to be scheduled, waiter.variable is now 2
# If quicker() came first, waiter.variable is now 3 (bad)
value = yield waiter()
# Claim reactor thread and increment waiter.variable
# If waiter() came first, waiter.variable is now 3
# If quicker() managed to sneak in before this, waiter.variable is now 2 (bad)
value2 = yield quicker()
self.assertEqual(value, 2)
self.assertEqual(value2, 3)
def test_blocking_call_in_thread(self):
"""
Check if the reactor thread is properly blocked by a threaded function.
"""
@blocking_call_on_reactor_thread
@inlineCallbacks
def waiter():
# 'Release' our claim on the reactor thread.
# blocking_call_on_reactor_thread should prevent anything else being scheduled though.
yield deferLater(reactor, 0.01, lambda: None)
waiter.variable += 1
returnValue(waiter.variable)
@blocking_call_on_reactor_thread
def quicker():
# Immediately use the reactor thread and return
waiter.variable += 1
return succeed(waiter.variable)
waiter.variable = 1
# 'Release' the reactor thread and increment waiter.variable
# If release didn't allow other to be scheduled, waiter.variable is now 2
# If quicker() came first, waiter.variable is now 3 (bad)
value = yield deferToThread(waiter)
# Claim reactor thread and increment waiter.variable
# If waiter() came first, waiter.variable is now 3
# If quicker() managed to sneak in before this, waiter.variable is now 2 (bad)
value2 = yield deferToThread(quicker)
self.assertEqual(value, 2)
self.assertEqual(value2, 3)
def test_delayed_deferred_requires_value(self):
self.assertRaises(ValueError, self.tm.register_task, "test", deferLater(reactor, 0.0, lambda: None), delay=1)
def sleep(self, time=.05):
yield deferLater(reactor, time, lambda: None)
def call_later(delay, f, *args, **kw):
task.deferLater(reactor, delay, f, *args, **kw).addErrback(my_err_back)
def game_state_checker(game, state, round_data, users_plots, counter=0):
if counter == SECONDS:
# move to the next state
if state == 'initial':
start_interactive(game, round_data, users_plots)
elif state == 'interactive':
start_outcome(game, round_data, users_plots)
else:
start_initial(game)
return
if state == 'initial':
r = InteractiveRound.objects.filter(game=game, round_order=round_data.get('current_round'), guess=None).count()
if r == 0:
start_interactive(game, round_data, users_plots)
return
elif state == 'interactive':
r = InteractiveRound.objects.filter(game=game, round_order=round_data.get('current_round'),
influenced_guess=None).count()
if r == 0:
start_outcome(game, round_data, users_plots)
return
elif state == 'outcome':
r = InteractiveRound.objects.filter(game=game, round_order=round_data.get('current_round'),
outcome=False).count()
if r == 0:
start_initial(game)
return
counter += 1
task.deferLater(reactor, 1, game_state_checker, game, state, round_data, users_plots, counter).addErrback(
twisted_error)
def start_interactive(game, round_data, users_plots):
state = 'interactive'
cache.set(game.id, {'state': state,
'round_data': round_data,
'users_plots': users_plots,
})
for i in users_plots:
user = i['user']
round_data['plot'] = i['plot']
interactive(user, game, round_data)
task.deferLater(reactor, 1, game_state_checker, game, state, round_data, users_plots).addErrback(twisted_error)
return
def start_outcome(game, round_data, users_plots):
cache.set(game.id, {'state': 'outcome',
'round_data': round_data,
'users_plots': users_plots,
})
for i in users_plots:
user = i['user']
round_data['plot'] = i['plot']
outcome(user, game, round_data)
task.deferLater(reactor, 1, game_state_checker, game, 'outcome', round_data, users_plots).addErrback(twisted_error)
def loseConnection(self, connDone=failure.Failure(main.CONNECTION_DONE)):
"""
Stop accepting connections on this port.
This will shut down the socket and call self.connectionLost(). It
returns a deferred which will fire successfully when the port is
actually closed, or with a failure if an error occurs shutting down.
"""
self.disconnecting = True
self.stopReading()
if self.connected:
self.deferred = deferLater(
self.reactor, 0, self.connectionLost, connDone)
return self.deferred
def test_errback(self):
"""
The L{Deferred} returned by L{task.deferLater} is errbacked if the
supplied function raises an exception.
"""
def callable():
raise TestException()
clock = task.Clock()
d = task.deferLater(clock, 1, callable)
clock.advance(1)
return self.assertFailure(d, TestException)
def test_runStopAfterTests(self):
"""
L{DistTrialRunner} calls C{reactor.stop} and unlocks the test directory
once the tests have run.
"""
functions = []
class FakeReactorWithSuccess(FakeReactor):
def spawnProcess(self, worker, *args, **kwargs):
worker.makeConnection(FakeTransport())
self.spawnCount += 1
worker._ampProtocol.run = self.succeedingRun
def succeedingRun(self, case, result):
return succeed(None)
def addSystemEventTrigger(oself, phase, event, function):
self.assertEqual('before', phase)
self.assertEqual('shutdown', event)
functions.append(function)
workingDirectory = self.runner._workingDirectory
fakeReactor = FakeReactorWithSuccess()
self.runner.run(TestCase(), fakeReactor)
def check():
localLock = FilesystemLock(workingDirectory + ".lock")
self.assertTrue(localLock.lock())
self.assertEqual(1, fakeReactor.stopCount)
# We don't wait for the process deferreds here, so nothing is
# returned by the function before shutdown
self.assertIdentical(None, functions[0]())
return deferLater(reactor, 0, check)
def test_inCallback(self):
"""
Log an error in an asynchronous callback.
"""
return task.deferLater(reactor, 0, lambda: log.err(makeFailure()))
def slow_operation():
def calc_value(value):
return 42
return task.deferLater(reactor, 1, calc_value, None)
def deferred_error():
def calc_result(value):
raise JsonRpcError("You wanted an error, here you have it!")
return task.deferLater(reactor, 0.1, calc_result, None)
def deferred_internal_error():
def calc_result(value):
return 56 / 0
return task.deferLater(reactor, 0.1, calc_result, None)