Я пытаюсь выполнять одновременные вызовы JSONRP C для удаленных агентов в Volttron. И я использую Volttron 5.1.0 (с gevent 1.1.2 и запросами 2.11.1).
Код работает как положено. Однако из файлов журнала я заметил, что запросы не выполняются одновременно. Я не уверен, что мне не хватает.
Я попробовал предложения, упомянутые в , как включить запросы в асин c режиме? (то есть, обработка асин c часть в запросе, обезьяна patch, et c.,). Но ничего не получается, либо решение устарело, либо требуются модули, недоступные в volttron env (я немного беспокоюсь о требованиях к версии).
Любые предложения или предложения будут очень полезны.
Соответствующая часть кода агента выглядит следующим образом:
Код агента
import gevent
import requests
url_roots = ['http://192.168.1.51:8080/', 'http://192.168.1.52:8080/']
jobs = [gevent.spawn(do_rpc, self._agent_id, url_root, 'pricepoint'
, get_json_params()
) for url_root in url_roots
]
gevent.joinall(jobs, timeout=11)
def do_rpc(id, url_root, method, params=None):
result = False
json_package = {
'jsonrpc': '2.0',
'id': id,
'method':method,
}
json_package['params'] = params
response = requests.post(url_root, data=json.dumps(json_package), timeout=10)
if response.ok:
if 'result' in response.json().keys():
success = response.json()['result']
if success:
result = True
return result
Журнал
2020-02-19 21 : 12: 15,913 (xyzagent-0,4 28079) xyz.ispace_msg_utils ОТЛАДКА: validate_bustopic_msg () 2020-02-19 21: 12: 15,918 (xyzagent-0.4 28079) xyz.agent ОТЛАДКА: Новая цена (pp) сообщения на местном автобусе, topi c: здание / цена ... 2020-02-19 21: 12: 15,919 (xyzagent-0,4 28079) xyz.agent ОТЛАДКА: ***** Новая цена предложения от местного: 0,20 Price_id: 2218566 2020-02-19 21: 12: 15,931 (xyzagent-0,4 28079) xyz.agent ОТЛАДКА: post_ds_new_pp () ... 2020-02-19 21: 12: 15,932 (xyzagent-0.4 28079) xyz.agent ОТЛАДКА: количество сообщений pp: 1 ... 2020-02-19 21: 12: 15,933 (xyzagent-0,4 28079) xyz.agent ОТЛАДКА: обработка, стр. Msg 1/1, id цены: 2218566 2020-02-19 21: 12: 15,938 (xyzagent-0,4 28079) xyz.agent ОТЛАДКА: новый ттл: 28. 2020-02-19 21: 12: 15,942 (xyzagent-0,4 28079) xyz.agent ОТЛАДКА: _ds_rpc_1_to_m () ... 2020-02-19 21: 12: 15,953 (xyzagent-0.4 28079) request.packages.urllib3.connectionpool ИНФОРМАЦИЯ: Запуск нового HTTP-соединения (1): 192.168.1.51 2020-02-19 21: 12: 16,079 () volttron.platform.web DEBUG: {'jsonrp c': '2.0', 'id': '2503402', 'result': True} 2020-02-19 21: 12: 16,080 () volttron.platform.web DEBUG: res - это словарь. 2020-02-19 21: 12: 16,238 (xyzagent-0.4 28079) request.packages.urllib3.connectionpool ОТЛАДКА: «POST / bridge HTTP / 1.1» 200 53 2020-02-19 21: 12: 16,245 (xyzagent-0.4 28079) request.packages.urllib3.connectionpool ИНФОРМАЦИЯ: Запуск нового HTTP-соединения (1): 192.168.1.52 2020-02-19 21: 12: 16,526 (xyzagent-0.4 28079) запросы. Packages.urllib3.connectionpool ОТЛАДКА: «POST / bridge HTTP / 1.1» 200 53 2020-02-19 21: 12: 16,529 (xyzagent-0.4 28079) xyz.agent ОТЛАДКА: отправка pp в ds (ZoneController-51), результат: успех !!! 2020-02-19 21: 12: 16,529 (xyzagent-0.4 28079) xyz.agent ОТЛАДКА: отправка pp в ds (ZoneController-52), результат: успех !!! 2020-02-19 21: 12: 16,530 (xyzagent-0,4 28079) xyz.agent ОТЛАДКА: _ds_rpc_1_to_m () ... выполнено 2020-02-19 21: 12: 16,530 (xyzagent-0.4 28079) xyz.agent ОТЛАДКА: msg успешно отправлено всем ds, удалив его из очереди 2020-02-19 21: 12: 16,530 (xyzagent-0.4 28079) xyz.agent ОТЛАДКА: сбросить счетчик повторов для успеха ds msg 2020-02-19 21: 12: 16,530 (xyzagent-0,4 28079) xyz.agent ОТЛАДКА: post_ds_new_pp () ... выполнено