return self.request ('POST', url, data = data, ** kwargs) TypeError: request () получил неожиданный аргумент ключевого слова 'json' - PullRequest
0 голосов
/ 10 января 2020

Я пытаюсь создать инцидент на сервере, который размещен на другом компьютере с Ubuntu.

Я сохранил приведенный ниже код в виде файла test.py, и когда я выполняю его с локального компьютера с Ubuntu, он работает нормально , Но когда я выполняю это с удаленной aws машины ec2, выдается ошибка.

from irisclient import Irisclient
client = IrisClient(
app='oncall',
key='magic',
api_host='http://192.168.54.101:16649'
)

client.incident(plan='Oncall test', context=
{
  "description": "hello",
  "requester": "joe"
}
               )

журналы ошибок

  File "/usr/lib/python2.7/dist-packages/irisclient/__init__.py", line 52, in incident
    r = self.post(self.url + 'incidents', json=incident_json)
  File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 377, in post
    return self.request('POST', url, data=data, **kwargs)
TypeError: request() got an unexpected keyword argument 'json'

Ответы [ 3 ]

0 голосов
/ 14 января 2020

Похоже, что это ошибка в вашем irisclient пакете. Прочитайте трассировку. Он говорит, что в строке 52 из irisclient / _ _ init _ _. Py вы звоните self.post , который, по-видимому, вызывает некоторый экземпляр из запросов модуля ... и ваш несходный код передает аргумент ключевого слова json = ... через этот вызов.

Но библиотека запросов не распознает этот аргумент ключевого слова (kwarg). Таким образом, он выдает TypeError (из строки 377 ... / запросы / sessions.py ).

Возможно, вам нужно пропустить JSON через data = опция, как описано здесь: Post JSON с использованием Python Requests

0 голосов
/ 25 февраля 2020

Я только что обновил свою python до версии 3.5, и она работает без изменения кода

0 голосов
/ 14 января 2020

Я думаю, что из-за того, что ваши контекстные данные являются диктом, попробуйте преобразовать контекстные данные в json, например:

import json
from irisclient import Irisclient

client = IrisClient(
    app='oncall',
    key='magic',
    api_host='http://192.168.54.101:16649'
)

data = {
    "description": "hello",
    "requester": "joe",
}

client.incident(plan='Oncall test', context=json.dumps(data))
...