Python-如何通过请求参数或其他方式发送值

时间:2018-11-26 18:29:12

标签: python class request

所以基本上我正在尝试做一些我不知道它是否会起作用的事情。我已经尝试过了,但是它当然行不通。我的计划是发送一个带有**** 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'

表示我无法向requests()添加值-所以我对您的问题是如何将 value_to_send 发送到另一个类{{1 }}?这样我就可以打印

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

1 个答案:

答案 0 :(得分:0)

问题是您将所有给定的kwargs从自定义请求方法直接传递给Session.request。您仍然可以将其他关键字参数传递给自定义方法,但是必须确保不要将无效的关键字args传递给Session.request

您可以通过在pop上调用kwargs来检索并删除要传递给自定义方法而不是Session.request的特殊关键字参数。< / p>

例如:

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中。