Гарантированно ли поступают витые RPC по порядку? - PullRequest
1 голос
/ 19 августа 2010

Я использую витую для реализации клиента и сервера.Я установил RPC между клиентом и сервером.Таким образом, на клиенте я делаю protocol.REQUEST_UPDATE_STATS(stats), что означает отправку сообщения с transport.write на транспортном клиенте, который является некоторой кодированной версией ["update_stats", stats].Когда сервер получает это сообщение, вызывается функция dataReceived в протоколе сервера, он декодирует ее и вызывает функцию, основанную на сообщении, например, CMD_UPDATE_STATS(stats) в этом случае.

Если на клиенте я делаю что-то вроде:

protocol.REQUEST_UPDATE_STATS("stats1")
protocol.REQUEST_UPDATE_STATS("stats2")

... Гарантируется ли, что сообщение "stats1" поступит до сообщения "stats2" на сервере?

ОБНОВЛЕНИЕ: отредактировано для большей ясности.Но теперь ответ кажется очевидным - ни за что.

1 Ответ

1 голос
/ 19 августа 2010

Они будут поступать в порядке получения запроса процессом Python. Это включает в себя время установления соединения плюс пакеты, содержащие данные запроса. Так что нет, это не гарантируется тем порядком, в котором отправляющие процессы отправляли запрос из-за задержек в сети, отброшенных пакетов, очереди пакетов на стороне отправителя и т. Д. «Порядок» также свободно определен для распределенных систем.

Но да, в общем, вы можете рассчитывать на их доставку по порядку, если они разделены относительно большим промежутком времени (100 мс по Интернету).

...