首页 > 编程语言 >使用python工具库requests访问HuggingFaceAPI设置代理转发失败问题

使用python工具库requests访问HuggingFaceAPI设置代理转发失败问题

时间:2024-11-18 17:47:50浏览次数:3  
标签:http python ip port flux proxy requests HuggingFaceAPI your

实现功能:

使用 HuggingFace 开源模型库中的 XLabs-AI/flux-RealismLora 模型,实现文本生成图片。

在这里插入图片描述

问题描述:

调用模型 XLabs-AI/flux-RealismLora API 接口时,设置了代理一直连接不上。

错误描述:
requests.exceptions.ConnectionError: 
HTTPSConnectionPool(host='api-inference.huggingface.co', port=443): 
Max retries exceeded with url: /models/XLabs-AI/flux-RealismLora (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x0000023E3B232E08>: 
Failed to establish a new connection: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。'))

通过curl工具测试,发现代理是没有问题的,图片数据返回成功。

curl -X POST https://api-inference.huggingface.co/models/XLabs-AI/flux-RealismLora \
-d '{"inputs": "Astronaut riding a horse"}' \
-H "Authorization: Bearer your_hugging_face_token" \
-x "http://your_proxy_ip:your_proxy_port" \
--output "./flux/output/test.png"

就想是不是 python 工具库 requests 的问题,经过查看requests方法源码和网上搜查资料发现是代理设置的问题。

原来的proxies定义是:

proxies = {
	"http": "http://your_proxy_ip:your_proxy_port", # 目标地址是 HTTP 协议的使用这个代理
}
解决方法:
proxies = {
	"http": "http://your_proxy_ip:your_proxy_port", # 目标地址是 HTTP 协议的使用这个代理
	"https": "http://your_proxy_ip:your_proxy_port" # 目标地址是 HTTPS 协议的使用这个代理
}
完整代码
import requests
import uuid
from datetime import datetime 

# curl -X POST https://api-inference.huggingface.co/models/XLabs-AI/flux-RealismLora \
# -d '{"inputs": "Astronaut riding a horse"}' \
# -H "Authorization: Bearer your_hugging_face_token" \
# -x "http://192.168.8.1:3128" 
# --output "./output/test.png"
# 通过curl是可以的,但是python不行,不知道为什么
# 是 proxies 的设置的问题,之前只配置了 "http": "http://your_proxy_ip:your_proxy_port" 只会将 http 的请求通过代理转发,而 https 的请求不会通过代理转发

API_URL = "https://api-inference.huggingface.co/models/XLabs-AI/flux-RealismLora"
headers = {"Authorization": "Bearer your_hugging_face_token"}
proxies = {
	"http": "http://your_proxy_ip:your_proxy_port", # 目标地址是 HTTP 协议的使用这个代理
	"https": "http://your_proxy_ip:your_proxy_port" # 目标地址是 HTTPS 协议的使用这个代理
}

def query(payload):
	response = requests.post(API_URL, headers=headers, json=payload, proxies=proxies, verify=False)
	return response.content
image_bytes = query({
	"inputs": "a cute dog in the garden",
})
# You can access the image with PIL.Image for example
import io
from PIL import Image
image = Image.open(io.BytesIO(image_bytes))
# generate UUID filename
filename = datetime.now().strftime("%Y%m%d") + "_" + str(uuid.uuid4()) + ".png"
image.save("./flux/output/" + filename)
注意

your_hugging_face_token: 你的 Hugging Face token
your_proxy_ip: 你的代理IP
your_proxy_port: 你的代理端口号

依赖安装

基本环境:python3.7

pip install requests

标签:http,python,ip,port,flux,proxy,requests,HuggingFaceAPI,your
From: https://blog.csdn.net/qq_42425392/article/details/143861801

相关文章

  • python中class和def数据的传输过程
    在Python中,class和def是两个核心概念,分别用于定义类和函数。它们在数据传输过程中扮演着不同的角色,但又紧密相关。一,class的作用:class用于定义一个类,类是面向对象编程中的基本单元,它是一个蓝图或模板,用于创建具有相同属性和方法的对象。类可以包含属性(成员变量)和方法(成......
  • python课件
    第一二章如果用二进制binary表示,那么数字前必须加上0b或0B;如果用八进制octonary表示,那么数字前必须加上0o或0O;如果用十六进制hexadecimal表示,那么数字前必须加上0x或0X。5**2=25(幂运算)5//2=2(整除)innotin判断指定序列中是否包含某个值isisnot判断两个标识符是否引......
  • python自动化之selenium 自动化unittest框架
    自动化框架一、介绍框架1、unittest框架是python中自带的框架2、作用:管理和组织测试用例当我们写的用例越来越多,我们就要考虑用例的编写的规范和组织,以便于后期的维护3、常见的自动化框架:po框架、pytest框架、unittest框架(我们讲解)4、unitest框架自带标准的库:有如下a、T......
  • 基于python在线考试统计系统(Pycharm Flask Django mysql)
    文章目录项目介绍系统开发技术路线具体实现截图开发技术系统性能核心代码部分展示源码/演示视频获取方式项目介绍系统主要包括首页、个人中心、学生管理、教师管理、班级管理、班级公告管理、考试通知管理、统计成绩管理、留言信息管理、教师评论管理、试题管理、论......
  • 100个Python精选库【建议收藏】
    Python为啥这么火,这么多人学,就是因为简单好学,功能强大,整个社区非常活跃,资料很多。而且这语言涉及了方方面面,比如自动化测试,运维,爬虫,数据分析,机器学习,金融领域,后端开发,云计算,游戏开发都有涉及。大概列了一下整个Python库的应用的方法面面,粗略算算就有20几个方向。左右两边分......
  • Python.gitignore
    #Byte-compiled/optimized/DLLfiles__pycache__/"""Python文件编译后的缓存目录。git上传时会忽略该目录下的文件"""*.py[cod]"""Python文件编译后的字节码文件(如.pyc、.pyo、.pyd)。"""*$py.class """Pyth......
  • Python..gitignore文件
    .gitignore文件#Byte-compiled/optimized/DLLfiles__pycache__/"""Python文件编译后的缓存目录。git上传时会忽略该目录下的文件"""*.py[cod]"""Python文件编译后的字节码文件(如.pyc、.pyo、.pyd)。"""*$py.class "&q......
  • centos7安装python3.11
    1、安装编译环境和依赖包: sudoyumgroupinstall"DevelopmentTools"sudoyuminstallgccopenssl-develbzip2-devellibffi-develwget2、下载Python3.11.4源码包: wgethttps://www.python.org/ftp/python/3.11.4/Python-3.11.4.tgz3、解压源码包: tar-xvfPy......
  • python RSA加密解密
    RSA加密和解密是一种常见的非对称加密方法,主要用于保护数据的安全性。在RSA加密中,使用公钥对数据进行加密,使用私钥进行解密。pipinstallpycryptodomefromCrypto.PublicKeyimportRSAfromCrypto.CipherimportPKCS1_OAEPimportbinasciidefgenerate_keys():#生......
  • python 获取计算机电脑的配置信息
    获取电脑操作系统、CPU、内存、磁盘等信息。pipinstallplatformpipinstallpsutil通过使用platform库获取基本的操作系统和处理器信息,并使用psutil库检索更多详细的系统资源状态,如CPU频率、内存状态和磁盘使用情况。调用get_computer_config()自定义函数将返回一个包含全......