Python - Как отправить значение через параметр запроса или другим способом - PullRequest
0 голосов
/ 26 ноября 2018

Так что в основном я пытаюсь сделать что-то, чего я не знаю, сработает ли это или нет вообще.Я пробовал это, но, конечно, это не будет работатьМой план состоит в том, чтобы отправить значение с **** kwargs **, где я потом смогу использовать его через другой класс, который заботится о значении.

И т.д.:

from my_requests_class import request_method

send_to_request = request_method()

value_to_send = "Hello stackoverflow"
def send():
    while True:

        try:
            url = 'https://www.google.com'


            headers = {
                'User-Agent': ('Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36'
                               ' (KHTML, like Gecko) Chrome/68.0.3440.75 Safari/537.36')
            }

            resp = send_to_request.get(url, headers=headers, verify=False, timeout=12, text=value_to_send)
            resp.raise_for_status()


        except HTTPError as err:
            randomtime = random.randint(0, 1)
            print("Woopsi, couldn't send!")
            time.sleep(randomtime)
            continue

, и это мой второй класс:

class request_method(Session):


    def __init__(self, *args, **kwargs):
        Session.__init__(self, *args, **kwargs)


    def request(self, method, url, *args, **kwargs):

        resp = Session.request(self, method, url, *args, **kwargs)        
        print(value_to_send)

однако, если я выполню такой код, я получу

request() got an unexpected keyword argument 'text'

означает, что я не могу добавить значение к request () - поэтому мой вопрос к вам заключается в том, как я могу отправить value_to_send методу, который находится в другом классе def request(self, method, url, *args, **kwargs):?так что я могу в этом случае напечатать

def request(self, method, url, *args, **kwargs):

    resp = Session.request(self, method, url, *args, **kwargs)        
    print(value_to_send)
    return resp

1 Ответ

0 голосов
/ 26 ноября 2018

Проблема в том, что вы передаете все данные kwargs из вашего пользовательского метода запроса напрямую Session.request.Вы по-прежнему можете передавать дополнительные аргументы ключевых слов в пользовательский метод, но вы должны быть уверены, что не передадите недопустимые аргументы ключевых слов в Session.request.

. Вы можете сделать это, вызвав pop на kwargs для полученияи удалите специальные аргументы ключевых слов, которые вы хотите передать в свой пользовательский метод, но не добавляете к Session.request.

Например:

class RequestMethod(Session):
    def request(self, method, url, *args, **kwargs):
        text = kwargs.pop("text", "")
        resp = Session.request(method, url, *args, **kwargs)

Теперь text имеет значениепередается в качестве аргумента ключевого слова в вашем примере "Hello stackoverflow" и больше не включается в kwargs.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...