本文整理汇总了Python中weblab.core.coordinator.clients.weblabdeusto.WebLabDeustoClient.login方法的典型用法代码示例。如果您正苦于以下问题:Python WebLabDeustoClient.login方法的具体用法?Python WebLabDeustoClient.login怎么用?Python WebLabDeustoClient.login使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类weblab.core.coordinator.clients.weblabdeusto.WebLabDeustoClient
的用法示例。
在下文中一共展示了WebLabDeustoClient.login方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: do_full_experiment_use
# 需要导入模块: from weblab.core.coordinator.clients.weblabdeusto import WebLabDeustoClient [as 别名]
# 或者: from weblab.core.coordinator.clients.weblabdeusto.WebLabDeustoClient import login [as 别名]
def do_full_experiment_use():
"""
Uses the configured experiment trying to resemble the way a human would do it.
This method will block for a while.
:return:
"""
wc = WebLabDeustoClient(config.WEBLAB_BASE_URL)
sessionid = wc.login(config.LOGIN, config.PASSWORD)
if not sessionid: raise Exception("Wrong login")
# Reserve the flash dummy experiment.
experiment_id = ExperimentId(config.EXP_NAME, config.EXP_CATEGORY)
waiting = wc.reserve_experiment(sessionid, experiment_id, "{}", "{}", None)
# print "Reserve response: %r" % waiting
reservation_id = waiting.reservation_id
while True:
status = wc.get_reservation_status(reservation_id)
# print "Reservation status: %r" % status
if type(status) is WaitingReservation:
time.sleep(0.5)
elif type(status) is ConfirmedReservation:
break
elif type(status) is WaitingConfirmationReservation:
time.sleep(0.5)
else:
print "Unknown reservation status."
print "Experiment reserved."
global users_in
users_in += 1
# Send some commands.
for i in range(config.COMMANDS_PER_USER):
# What's commandstring actually for??
cmd = Command(config.COMMAND)
result = wc.send_command(reservation_id, cmd)
if not result.commandstring.startswith("Received command"):
raise Exception("Unrecognized command response")
# print "Command result: %r" % result
time.sleep(config.TIME_BETWEEN_COMMANDS)
users_in -= 1
result = wc.logout(sessionid)
print "Logout result: %r" % result
示例2: test_login
# 需要导入模块: from weblab.core.coordinator.clients.weblabdeusto import WebLabDeustoClient [as 别名]
# 或者: from weblab.core.coordinator.clients.weblabdeusto.WebLabDeustoClient import login [as 别名]
def test_login(self):
port = 15123
self.configurationManager._set_value(self.rfs.FACADE_JSON_PORT, port)
self.rfs.start()
try:
client = WebLabDeustoClient("http://127.0.0.1:%s/weblab/" % port)
expected_sess_id = SessionId.SessionId("whatever")
USERNAME = "the username"
PASSWORD = "the password"
self.mock_server.return_values["login"] = expected_sess_id
session = client.login(USERNAME, PASSWORD)
self.assertEquals(expected_sess_id.id, session.id)
self.assertEquals(USERNAME, self.mock_server.arguments["login"][0])
self.assertEquals(PASSWORD, self.mock_server.arguments["login"][1])
finally:
self.rfs.stop()
示例3: IntegrationNoConcurrencyTestCase
# 需要导入模块: from weblab.core.coordinator.clients.weblabdeusto import WebLabDeustoClient [as 别名]
# 或者: from weblab.core.coordinator.clients.weblabdeusto.WebLabDeustoClient import login [as 别名]
class IntegrationNoConcurrencyTestCase(object):
def setUp(self):
self.global_config = load_dir(self.DEPLOYMENT_DIR)
self.process_handlers = []
for process in self.PROCESSES:
process_handler = self.global_config.load_process('myhost', process)
self.process_handlers.append(process_handler)
self.core_server = GLOBAL_REGISTRY[self.CORE_ADDRESS]
self.experiment_dummy1 = GLOBAL_REGISTRY[self.EXPERIMENT_DUMMY1]
self.experiment_dummy2 = GLOBAL_REGISTRY[self.EXPERIMENT_DUMMY2]
self.core_config = self.core_server.config
self.client = WebLabDeustoClient('http://localhost:%s/weblab/' % self.core_config[configuration_doc.CORE_FACADE_PORT])
def tearDown(self):
GLOBAL_REGISTRY.clear()
for process_handler in self.process_handlers:
process_handler.stop()
def test_simple_single_uses(self):
for _ in range(1):
self._single_use()
self._single_use()
self._single_use()
def _single_use(self, logout = True, plus_async_use = True):
"""
Will use an experiment.
@param logout If true, the user will be logged out after the use. Otherwise not.
@param plus_async_use If true, after using the experiment synchronously, it will use it
again using the asynchronous versions of the send_command and send_file requests.
"""
self._single_sync_use(logout)
if plus_async_use:
self._single_async_use(logout)
def _single_sync_use(self, logout = True):
session_id, reservation_id = self._get_reserved()
CONTENT = "content of the program FPGA"
response = self.client.send_file(reservation_id, ExperimentUtil.serialize(CONTENT), 'program')
self.assertEquals(response.commandstring, 'ack')
response = self.client.send_command(reservation_id, Command.Command("STATE"))
self.assertEquals(response.commandstring, 'STATE')
response = self.client.send_command(reservation_id, Command.Command("ChangeSwitch on 0"))
self.assertEquals(response.commandstring, "ChangeSwitch on 0")
if logout:
self.client.logout(session_id)
def _get_reserved(self):
session_id = self.client.login('intstudent1', 'password')
user_information = self.client.get_user_information(session_id)
self.assertEquals( 'intstudent1', user_information.login)
self.assertEquals( 'Name of integration test 1', user_information.full_name)
self.assertEquals( '[email protected]', user_information.email)
experiments = self.client.list_experiments(session_id)
self.assertEquals( 2, len(experiments))
dummy1_experiments = [ exp.experiment for exp in experiments if exp.experiment.name == 'dummy1' ]
self.assertEquals( len(dummy1_experiments), 1)
dummy1_experiment = dummy1_experiments[0]
status = self.client.reserve_experiment(session_id, dummy1_experiment.to_experiment_id(), "{}", "{}")
reservation_id = status.reservation_id
# wait until it is reserved
short_time = 0.1
# Time extended from 9.0 to 15.0 because at times the test failed, possibly for that reason.
times = 15.0 / short_time
while times > 0:
new_status = self.client.get_reservation_status(reservation_id)
if not isinstance(new_status, Reservation.WaitingConfirmationReservation) and not isinstance(new_status, Reservation.WaitingReservation):
break
times -= 1
time.sleep(short_time)
reservation = self.client.get_reservation_status(reservation_id)
self.assertTrue(
isinstance(reservation, Reservation.ConfirmedReservation),
"Reservation %s is not Confirmed, as expected by this time" % reservation
)
return session_id, reservation_id
def _single_async_use(self, logout = True):
session_id, reservation_id = self._get_reserved()
# send the program again, but asynchronously. Though this should work, it is not really very customary
# to send_file more than once in the same session. In fact, it is a feature which might get removed in
#.........这里部分代码省略.........
示例4: AbstractFederatedWebLabDeustoTestCase
# 需要导入模块: from weblab.core.coordinator.clients.weblabdeusto import WebLabDeustoClient [as 别名]
# 或者: from weblab.core.coordinator.clients.weblabdeusto.WebLabDeustoClient import login [as 别名]
class AbstractFederatedWebLabDeustoTestCase(object):
def setUp(self):
# Clean the global registry of servers
GLOBAL_REGISTRY.clear()
CONSUMER_CONFIG_PATH = self.FEDERATED_DEPLOYMENTS + '/consumer/'
PROVIDER1_CONFIG_PATH = self.FEDERATED_DEPLOYMENTS + '/provider1/'
PROVIDER2_CONFIG_PATH = self.FEDERATED_DEPLOYMENTS + '/provider2/'
self.consumer_handler = load_dir(CONSUMER_CONFIG_PATH).load_process('consumer_machine', 'main_instance' )
self.provider1_handler = load_dir(PROVIDER1_CONFIG_PATH).load_process('provider1_machine', 'main_instance' )
self.provider2_handler = load_dir(PROVIDER2_CONFIG_PATH).load_process('provider2_machine', 'main_instance' )
self.consumer_client = WebLabDeustoClient("http://127.0.0.1:%s/weblab/" % 18345)
self.provider1_client = WebLabDeustoClient("http://127.0.0.1:%s/weblab/" % 28345)
self.provider2_client = WebLabDeustoClient("http://127.0.0.1:%s/weblab/" % 38345)
# dummy1: deployed in consumer, provider1, provider2
self.dummy1 = ExperimentId("dummy1", "Dummy experiments")
# dummy2: deployed in consumer
self.dummy2 = ExperimentId("dummy2", "Dummy experiments")
# dummy3: deployed in provider1 as "dummy3_with_other_name"
self.dummy3 = ExperimentId("dummy3", "Dummy experiments")
# dummy4: deployed in provider2
self.dummy4 = ExperimentId("dummy4", "Dummy experiments")
def tearDown(self):
self.consumer_handler.stop()
self.provider1_handler.stop()
self.provider2_handler.stop()
time.sleep(1)
#
# This test may take even 20-30 seconds; therefore it is not splitted
# into subtests (the setup and teardown are long)
#
def test_federated_experiment(self):
debug("Test test_federated_experiment starts")
#######################################################
#
# Local testing (to check that everything is right)
#
# We enter as a student of Consumer, and we ask for an
# experiment that only the Consumer university has
# (dummy2).
#
session_id = self.consumer_client.login('fedstudent1', 'password')
reservation_id = self._test_reservation(session_id, self.dummy2, 'Consumer', True, True)
self._wait_multiple_reservations(20, session_id, [ reservation_id ], [0])
reservation_result = self.consumer_client.get_experiment_use_by_id(session_id, reservation_id)
self.assertTrue(reservation_result.is_finished())
self._find_command(reservation_result, 'Consumer')
#######################################################
#
# Simple federation
#
# Now we ask for an experiment that only Provider 1
# has. There is no load balance, neither
# subcontracting
#
reservation_id = self._test_reservation(session_id, self.dummy3, 'Provider 1', True, True)
self._wait_multiple_reservations(20, session_id, [ reservation_id ], [0])
reservation_result = self.consumer_client.get_experiment_use_by_id(session_id, reservation_id)
self.assertTrue(reservation_result.is_finished())
self._find_command(reservation_result, 'Provider 1')
#######################################################
#
# Subcontracted federation
#
# Now we ask for an experiment that only Provider 2
# has. There is no load balance, but Consumer will
# contact Provider 1, which will contact Provider 2
#
reservation_id = self._test_reservation(session_id, self.dummy4, 'Provider 2', True, True)
self._wait_multiple_reservations(20, session_id, [ reservation_id ], [0])
reservation_result = self.consumer_client.get_experiment_use_by_id(session_id, reservation_id)
self.assertTrue(reservation_result.is_finished())
self._find_command(reservation_result, 'Provider 2')
#######################################################
#
# Cross-domain load balancing
#
# Now we ask for an experiment that Consumer has,
# but also Provider 1 and Provider 2.
#
reservation_id1 = self._test_reservation(session_id, self.dummy1, 'Consumer', True, False, user_agent = 'Chrome')
reservation_id2 = self._test_reservation(session_id, self.dummy1, 'Provider 1', True, False, user_agent = 'Firefox')
reservation_id3 = self._test_reservation(session_id, self.dummy1, 'Provider 2', True, False, user_agent = 'Safari')
reservation_ids = (reservation_id1, reservation_id2, reservation_id3)
reservation_results = self.consumer_client.get_experiment_uses_by_id(session_id, reservation_ids)
#.........这里部分代码省略.........
示例5: run
# 需要导入模块: from weblab.core.coordinator.clients.weblabdeusto import WebLabDeustoClient [as 别名]
# 或者: from weblab.core.coordinator.clients.weblabdeusto.WebLabDeustoClient import login [as 别名]
def run(self):
assertions = []
times = []
print "Starting process"
reservation_id = None
try:
weblab = WebLabDeustoClient(self.url)
session_id = weblab.login(self.username, self.password)
reservation = weblab.reserve_experiment(session_id, ExperimentId("visir", "Visir experiments"), "{}", "{}")
while reservation.status in (Reservation.WAITING_CONFIRMATION or Reservation.WAITING):
time.sleep(1)
reservation = weblab.get_reservation_status( reservation.reservation_id )
if reservation.status != Reservation.CONFIRMED:
raise Exception("Confirmed reservation expected for reservation_id (%r). Found status: %r" % (reservation.reservation_id, reservation.status))
print "Confirmed reservation, starting..."
reservation_id = reservation.reservation_id
response = weblab.send_command(reservation_id, Command("GIVE_ME_SETUP_DATA"))
cookie = json.loads(response.commandstring)['cookie']
login_response = weblab.send_command(reservation_id, Command(visir_commands.visir_login_request % cookie))
visir_sessionid = visir_commands.parse_login_response(login_response)
for _ in xrange(self.executions):
before = time.time()
response = weblab.send_command(reservation_id, Command(visir_commands.visir_request_11k % visir_sessionid))
after = time.time()
result = visir_commands.parse_command_response(response)
assertions.append(AssertionResult(11000.0, 200, result))
times.append(after - before)
before = time.time()
response = weblab.send_command(reservation_id, Command(visir_commands.visir_request_rectifier % visir_sessionid))
after = time.time()
# Don't know how to measure the response, but at least check that the response is a valid VISIR response
result = visir_commands.parse_command_response(response, 'dmm_resolution')
assertions.append(AssertionResult(3.5, 200, result))
times.append(after - before)
before = time.time()
response = weblab.send_command(reservation_id, Command(visir_commands.visir_request_900 % visir_sessionid))
after = time.time()
result = visir_commands.parse_command_response(response)
assertions.append(AssertionResult(900.0, 200, result))
times.append(after - before)
before = time.time()
response = weblab.send_command(reservation_id, Command(visir_commands.visir_request_1k % visir_sessionid))
after = time.time()
result = visir_commands.parse_command_response(response)
assertions.append(AssertionResult(1000.0, 200, result))
times.append(after - before)
before = time.time()
response = weblab.send_command(reservation_id, Command(visir_commands.visir_request_10k % visir_sessionid))
after = time.time()
result = visir_commands.parse_command_response(response)
assertions.append(AssertionResult(10000.0, 200, result))
times.append(after - before)
weblab.finished_experiment(reservation_id)
except Exception as exception:
if reservation_id is not None:
try:
weblab.finished_experiment(reservation_id)
loggedout = True
except:
loggedout = False
else:
loggedout = "no id provided"
print "Finished with exception and logged out: %s" % loggedout
traceback.print_exc()
return TesterResult(True, assertions, exception, times)
else:
print "Finished without exception"
return TesterResult(any(map(lambda assertion : assertion.failed, assertions)), assertions, None, times)
示例6: IntegrationMultipleUsersTestCase
# 需要导入模块: from weblab.core.coordinator.clients.weblabdeusto import WebLabDeustoClient [as 别名]
# 或者: from weblab.core.coordinator.clients.weblabdeusto.WebLabDeustoClient import login [as 别名]
class IntegrationMultipleUsersTestCase(object):
def setUp(self):
self.global_config = load_dir(self.DEPLOYMENT_DIR)
self.process_handlers = []
for process in self.PROCESSES:
process_handler = self.global_config.load_process('myhost', process)
self.process_handlers.append(process_handler)
self.core_server = GLOBAL_REGISTRY[self.CORE_ADDRESS]
self.experiment_dummy1 = GLOBAL_REGISTRY[self.EXPERIMENT_DUMMY1]
self.experiment_dummy2 = GLOBAL_REGISTRY[self.EXPERIMENT_DUMMY2]
self.core_config = self.core_server.config
self.client = WebLabDeustoClient('http://localhost:%s/weblab/' % self.core_config[configuration_doc.CORE_FACADE_PORT])
def tearDown(self):
GLOBAL_REGISTRY.clear()
for process_handler in self.process_handlers:
process_handler.stop()
def test_single_uses_timeout(self):
# 6 users get into the system
session_id1 = self.client.login('intstudent1','password')
session_id2 = self.client.login('intstudent2','password')
session_id3 = self.client.login('intstudent3','password')
session_id4 = self.client.login('intstudent4','password')
session_id5 = self.client.login('intstudent5','password')
session_id6 = self.client.login('intstudent6','password')
# they all have access to the ud-fpga experiment
experiments1 = self.client.list_experiments(session_id1)
dummy_experiments1 = [ exp.experiment for exp in experiments1 if exp.experiment.name == 'dummy1' ]
self.assertEquals( len(dummy_experiments1), 1 )
experiments2 = self.client.list_experiments(session_id2)
dummy_experiments2 = [ exp.experiment for exp in experiments2 if exp.experiment.name == 'dummy1' ]
self.assertEquals( len(dummy_experiments2), 1 )
experiments3 = self.client.list_experiments(session_id3)
dummy_experiments3 = [ exp.experiment for exp in experiments3 if exp.experiment.name == 'dummy1' ]
self.assertEquals( len(dummy_experiments3), 1 )
experiments4 = self.client.list_experiments(session_id4)
dummy_experiments4 = [ exp.experiment for exp in experiments4 if exp.experiment.name == 'dummy1' ]
self.assertEquals( len(dummy_experiments4), 1 )
experiments5 = self.client.list_experiments(session_id5)
dummy_experiments5 = [ exp.experiment for exp in experiments5 if exp.experiment.name == 'dummy1' ]
self.assertEquals( len(dummy_experiments5), 1 )
experiments6 = self.client.list_experiments(session_id6)
dummy_experiments6 = [ exp.experiment for exp in experiments6 if exp.experiment.name == 'dummy1' ]
self.assertEquals( len(dummy_experiments6), 1 )
# 3 users try to reserve the experiment
status1 = self.client.reserve_experiment(session_id1, dummy_experiments1[0].to_experiment_id(), "{}", "{}")
reservation_id1 = status1.reservation_id
status2 = self.client.reserve_experiment(session_id2, dummy_experiments2[0].to_experiment_id(), "{}", "{}")
reservation_id2 = status2.reservation_id
status3 = self.client.reserve_experiment(session_id3, dummy_experiments3[0].to_experiment_id(), "{}", "{}")
reservation_id3 = status3.reservation_id
# wait until it is reserved
short_time = 0.1
times = 10.0 / short_time
while times > 0:
time.sleep(short_time)
new_status = self.client.get_reservation_status(reservation_id1)
if not isinstance(new_status, Reservation.WaitingConfirmationReservation):
break
times -= 1
# first user got the device. The other two are in WaitingReservation
reservation1 = self.client.get_reservation_status(reservation_id1)
self.assertTrue(isinstance(reservation1, Reservation.ConfirmedReservation))
reservation2 = self.client.get_reservation_status(reservation_id2)
self.assertTrue(isinstance(reservation2, Reservation.WaitingReservation))
self.assertEquals( 0, reservation2.position)
reservation3 = self.client.get_reservation_status(reservation_id3)
self.assertTrue(isinstance(reservation3, Reservation.WaitingReservation))
self.assertEquals( 1, reservation3.position)
# Another user tries to reserve the experiment. He goes to the WaitingReservation, position 2
status4 = self.client.reserve_experiment(session_id4, dummy_experiments4[0].to_experiment_id(), "{}", "{}")
reservation_id4 = status4.reservation_id
reservation4 = self.client.get_reservation_status(reservation_id4)
self.assertTrue(isinstance( reservation4, Reservation.WaitingReservation))
self.assertEquals( 2, reservation4.position)
# The state of other users does not change
#.........这里部分代码省略.........
示例7: ExperimentId
# 需要导入模块: from weblab.core.coordinator.clients.weblabdeusto import WebLabDeustoClient [as 别名]
# 或者: from weblab.core.coordinator.clients.weblabdeusto.WebLabDeustoClient import login [as 别名]
import sys
import time
from weblab.core.reservations import Reservation
from weblab.core.coordinator.clients.weblabdeusto import WebLabDeustoClient
from weblab.data.command import Command
from weblab.data.experiments import ExperimentId
URL = "http://www.weblab.deusto.es/weblab/"
USERNAME = "porduna"
PASSWORD = ""
EXP_ID = ExperimentId("robot-movement", "Robot experiments")
N = 50
weblab = WebLabDeustoClient( URL )
session_id = weblab.login(USERNAME, PASSWORD)
for n in xrange(N):
print "Reserving (%s)..." % n,
sys.stdout.flush()
reservation = weblab.reserve_experiment(session_id, EXP_ID, "{}", "{}")
while reservation.status in (Reservation.WAITING_CONFIRMATION or Reservation.WAITING):
time.sleep(1)
reservation = weblab.get_reservation_status( reservation.reservation_id )
print ".",
sys.stdout.flush()
if reservation.status != Reservation.CONFIRMED:
raise Exception("Confirmed reservation expected for reservation_id (%r). Found status: %r" % (reservation.reservation_id, reservation.status))
示例8: run
# 需要导入模块: from weblab.core.coordinator.clients.weblabdeusto import WebLabDeustoClient [as 别名]
# 或者: from weblab.core.coordinator.clients.weblabdeusto.WebLabDeustoClient import login [as 别名]
def run(self):
assertions = []
times = []
print "Starting process"
reservation_id = None
try:
weblab = WebLabDeustoClient(self.url)
session_id = weblab.login(self.username, self.password)
reservation = weblab.reserve_experiment(session_id, ExperimentId(VISIR_EXPERIMENT, "Visir experiments"), "{}", "{}")
while reservation.status in (Reservation.WAITING_CONFIRMATION or Reservation.WAITING):
time.sleep(1)
reservation = weblab.get_reservation_status( reservation.reservation_id )
if reservation.status != Reservation.CONFIRMED:
raise Exception("Confirmed reservation expected for reservation_id (%r). Found status: %r" % (reservation.reservation_id, reservation.status))
print "Confirmed reservation, starting..."
reservation_id = reservation.reservation_id
initial_config = reservation.initial_configuration
cookie = json.loads(initial_config)['cookie']
login_response = weblab.send_command(reservation_id, Command(visir_commands.visir_login_request % cookie))
visir_sessionid = visir_commands.parse_login_response(login_response)
iteration = 0
for _ in xrange(self.executions):
before = time.time()
response = weblab.send_command(reservation_id, Command(visir_commands.visir_request_11k % visir_sessionid))
after = time.time()
result = visir_commands.parse_command_response(response)
ar1 = AssertionResult(11000.0, 11000.0 * 0.2, result)
if DEBUG and ar1.failed:
print "[Failed at 1st]" + str(ar1)
if not IGNORE_ASSERTIONS:
assertions.append(ar1)
times.append(after - before)
# This command is currently commented out because it does not seem to be compatible with lxi_visir.
# before = time.time()
# response = weblab.send_command(reservation_id, Command(visir_commands.visir_request_rectifier % visir_sessionid))
# after = time.time()
# # Don't know how to measure the response, but at least check that the response is a valid VISIR response
# result = visir_commands.parse_command_response(response, 'dmm_resolution')
# assertions.append(AssertionResult(3.5, 200, result))
# times.append(after - before)
time.sleep(1)
before = time.time()
response = weblab.send_command(reservation_id, Command(visir_commands.visir_request_900 % visir_sessionid))
after = time.time()
result = visir_commands.parse_command_response(response)
ar3 = AssertionResult(900.0, 900.0 * 0.2, result)
if DEBUG and ar3.failed:
print "[Failed at 3rd]" + str(ar3)
if not IGNORE_ASSERTIONS:
assertions.append(ar3)
times.append(after - before)
time.sleep(1)
before = time.time()
response = weblab.send_command(reservation_id, Command(visir_commands.visir_request_1k % visir_sessionid))
after = time.time()
result = visir_commands.parse_command_response(response)
ar4 = AssertionResult(1000.0, 1000 * 0.2, result)
if DEBUG and ar4.failed:
print "[Failed at 4th]" + str(ar4)
if not IGNORE_ASSERTIONS:
assertions.append(ar4)
times.append(after - before)
time.sleep(1)
before = time.time()
response = weblab.send_command(reservation_id, Command(visir_commands.visir_request_10k % visir_sessionid))
after = time.time()
result = visir_commands.parse_command_response(response)
ar5 = AssertionResult(10000.0, 10000 * 0.2, result)
if DEBUG and ar5.failed:
print "[Failed at 5th]" + str(ar5)
if not IGNORE_ASSERTIONS:
assertions.append(ar5)
times.append(after - before)
iteration += 1
time.sleep(1)
weblab.finished_experiment(reservation_id)
except Exception as exception:
if reservation_id is not None:
try:
#.........这里部分代码省略.........