在下面的代码中,我使用requests.post.如果网站关闭,有什么可能继续?

我有以下代码:

def post_test():

    import requests

    url = 'http://example.com:8000/submit'
    payload = {'data1': 1, 'data2': 2}
    try:
        r = requests.post(url, data=payload)
    except:
        return   # if the requests.post fails (eg. the site is down) I want simly to return from the post_test(). Currenly it hangs up in the requests.post without raising an error.
    if (r.text == 'stop'):
        sys.exit()  # I want to terminate the whole program if r.text = 'stop' - this works fine.

我怎么能提出这些要求呢.post超时,或者从post_test()返回(如果有).com或其/submit应用程序已关闭?

推荐答案

使用timeout参数:

r = requests.post(url, data=payload, timeout=1.5)

注意:timeout不是整个响应下载的时间限制;

Python-3.x相关问答推荐

Numpy argmin()以查找最近的元组

如何在 python 中将带有时区信息的时间戳转换为 utc 时间

torch.stack([t1, t1, t1], dim=1)与torch.hstack([t1, t1, t1])之间有什么区别?

try 使用 GEKKO 求解非线性方程组.系统有多种解决方案,但 GEKKO 给出了错误的解决方案.我该如何解决?

如果集合大于 len(x),则 pandas 在重复的行中拆分集合列

attrs 将 list[str] 转换为 list[float]

如何向 scikit-learn 函数添加类型提示?

numpy是如何添加@运算符的?

过滤阈值大小数据以使用 Pyspark 或 Python 读取

如何将元组列表拆分为两个单独的列表?

python 3:如何判断一个对象是否是一个函数?

如何从 Python 3.5 降级到 Python 3.4

使用 python 正则表达式匹配日期

如何为 Python 中的线程设置异步事件循环?

virtualenv virtualenvwrapper virtualenv:错误:无法识别的参数:--no-site-packages

Linux Mint 上的 Python3 错误没有名为蓝牙的模块

迭代dict值

判断 dict.items() 中的成员资格的时间复杂度是多少?

为什么排序列表比未排序列表大

我可以替换 Python 中对象的现有方法吗?