https://github.com/saucelabs/monocle
Следующий пример приведен в качестве примера стандартного программирования, управляемого событиями:
def get_cmd(conn):
conn.read_until("\n", callback=handle_cmd)
def handle_cmd(conn, cmd):
if cmd.type == "get-address":
# keep track of the conn so we can write the response back!
def callback(result):
handle_user_query_result(conn, result)
db.query(cmd.username, callback)
else:
conn.write("unknown command")
def handle_user_query_result(conn, user):
conn.write(user.address)
Хотя я не понимаю, зачем требовалось замыкание.«Отслеживание соединения» противоречит принципам работы первой функции «get_cmd».Кроме того, разве управляемые событиями рамки обычно не позволяют передавать параметры вокруг?
Я предполагаю, что это был бы более правдоподобный пример:
def get_cmd(conn):
conn.read_until("\n", callback=handle_cmd)
def handle_cmd(conn, cmd):
if cmd.type == "get-address":
db.query(cmd.username, callback=handle_user_query_result, params=conn)
else:
conn.write("unknown command")
def handle_user_query_result(result, params):
user = result
conn = params
conn.write(user.address)
Я ошибаюсь?