Ответ 1
Это документ, который отчаянно нуждается в существовании, но реализация проводного протокола реализована в одном объекте, поэтому он должен "Слишком сложно оттуда оттуда. MD5 HMAC Digest. Ключ для дайджеста находится в поле key
файла подключения. "Сообщение", используемое в дайджесте HMAC, представляет собой конкатенацию байтов сериализованного заголовка, parent_header, метаданных и содержимого в том же порядке, который отправлен по проводу.
Вы можете отключить подпись сообщения, указав значение конфигурации
Session.key = ''
к связанным с IPython частям вашего кода, и в этом случае поле дайджест всегда будет пустой строкой ''
. Я бы порекомендовал сделать это во время начала работы, чтобы вы могли сначала разработать более интересные части реализации.
Вот пример запроса на выполнение и его ответ, фактически отправленный IPython.
Запрос:
[
<IDS|MSG>
6ea6b213262402cc1ad3c1d3e342a9f6
{"date":"2013-04-27T23:22:13.522049","username":"minrk","session":"5b03b89a-93c9-4113-bb85-17ba57233711","msg_id":"c6d0f85e-fc25-4f1e-84e1-3d706b615393","msg_type":"execute_request"}
{}
{}
{"user_variables":[],"code":"1\n","silent":false,"allow_stdin":true,"store_history":true,"user_expressions":{}}
]
и его ответ:
[
5b03b89a-93c9-4113-bb85-17ba57233711
<IDS|MSG>
47d1052f6e8f333d18480938ca91719b
{"date":"2013-04-27T23:22:13.528239","username":"kernel","session":"d7eb303b-d2d0-4723-aef2-738545a8da11","msg_id":"9ed1d332-398c-4132-b203-1e7bf8fed712","msg_type":"execute_reply"}
{"date":"2013-04-27T23:22:13.522049","username":"minrk","session":"5b03b89a-93c9-4113-bb85-17ba57233711","msg_id":"c6d0f85e-fc25-4f1e-84e1-3d706b615393","msg_type":"execute_request"}
{"dependencies_met":true,"engine":"645fb29f-37ab-40c9-bc01-b7fbfe3c2112","status":"ok","started":"2013-04-27T23:22:13.524114"}
{"status":"ok","execution_count":2,"user_variables":{},"payload":[],"user_expressions":{}}
]