Эта строка неверна
futures.append(loop.run_in_executor(
executor,
requests.post(url=param['url'], json=param['data'], auth=auth)
))
Вы должны передать функциональный объект, такой как requests.post
, вместе с параметрами и передачей результата вызова этой функции requests.post(url=param['url'], json=param['data'], auth=auth)
Таким образом, в основном интерпретатор прав, передавая объект Response
, который исполнитель пытается вызвать как функция. Чтобы исправить это, используйте functools.partial
, чтобы создать функцию с уже установленными аргументами, если вы хотите использовать аргументы с ключевыми словами, например:
func = functools.partial(requests.post,url=param['url'], json=param['data'], auth=auth)
futures.append(loop.run_in_executor(
executor,
func))
Или передайте их вместе в правильном порядке, который requets.post
ожидает так:
for param in params:
futures.append(loop.run_in_executor(
executor,
requests.post,param['url'],None, param['data'],
))
Обратите внимание, что вы не можете использовать аргументы ключевых слов здесь, поэтому убедитесь, что вы передаете их в правильном порядке, мне пришлось опустить auth
во втором подходе, так как это не позиционный аргумент