我对API请求有一个奇怪的问题。问题是使用请求
或浏览器时,我使用的url工作正常。但使用异步服务程序时,URL会失败并返回状态代码404。
下面是我的代码:我已经构建了一个异步下载函数get
:
""" download functions for asynchronous download """
import asyncio
from pathlib import Path
from typing import Union, Dict, Any
import aiohttp
HTTP_DEFAULT_TIME_OUT = 60 * 10
async def _get(
url: Union[Path, str],
timeout: aiohttp.ClientTimeout = aiohttp.ClientTimeout(),
**kwargs: Union[aiohttp.BasicAuth, Dict[str, Any]]
) -> bytes:
"""
Base function downloader with aiohttp and async session
Args:
url: remote path to file
timeout: how long should it max take to download the file
**kwargs: parameters to pass to the aiohttp get function:
auth: aiohttp.BasicAuth("", "")
params: Dict[str, Any]
headers: Dict[str, Any]
Returns:
a bytes object
"""
kwargs["timeout"] = timeout
async with aiohttp.request("GET", url, **kwargs) as response:
return await response.read()
def get(
url: Union[Path, str],
timeout: int = HTTP_DEFAULT_TIME_OUT,
**kwargs: Union[aiohttp.BasicAuth, Dict[str, Any]]
) -> bytes:
"""
download function handling async download with aiohttp
Args:
url: remote path to file
timeout: how long should it max take to download the file
**kwargs: parameters to pass to the aiohttp get function:
auth: aiohttp.BasicAuth("", "")
params: Dict[str, Any]
headers: Dict[str, Any]
"""
return asyncio.get_event_loop().run_until_complete(
_get(url, aiohttp.ClientTimeout(timeout), **kwargs)
)
remote_file='https://api.eumetsat.int/data/download/collections/EO%3AEUM%3ADAT%3AMSG%3AHRSEVIRI/products/MSG4-SEVI-MSG15-0100-NA-20210916121242.731000000Z-NA?access_token=43e1b232-02ed-30db-9d17-363f00a4a1f0'
注意:令牌将过期。
使用请求
很好。但使用我自己的get
函数会产生:
get(remote_file)
b'<am:fault xmlns:am="http://wso2.org/apimanager"><am:code>404</am:code><am:type>Status report</am:type><am:message>Runtime Error</am:message><am:description>No matching resource found for given API Request</am:description></am:fault>'
使用myget
功能下载其他内容也很好。
那么有人知道为什么服务器在尝试异步访问时返回404吗?
我之前的问题被关闭了,因为你们中的一些人认为这是一个类似的问题:但是这个问题的原因是一个443 ssl认证错误。我仍然收到404如果我应用了一个附加的Connector
,行为是相同的。
connector=aiohttp.TCPConnector(verify_ssl=False)
get(remote_file, connector=connector)
使用:python==3.9。7 aiohttp==3.7。4.
原因是URL编码。为此,yarl
可用于:
import yarl
remote_file = 'https://api.eumetsat.int/data/download/collections/EO%3AEUM%3ADAT%3AMSG%3AHRSEVIRI/products/MSG4-SEVI-MSG15-0100-NA-20210916121242.731000000Z-NA?access_token=43e1b232-02ed-30db-9d17-363f00a4a1f0'
remote_file_encoded = yarl.URL(remote_file, encoded=True)
每当我启动AWS代码构建时,每次都会出现这种类型的错误。请帮忙。 下载源失败3分钟2秒 收到https://github.com/themithunbiswas/test-repo.git/info/refs?service=git-上传包:拨打tcp 192.30。253.113:443:i/o超时
这是我的问题。我正试图通过Asynctask使用download manager intent从服务器下载文件。在我的asynctask类的doInBackground中,我调用download manager intent,当下载完成(成功或失败)时,doInBackground将返回布尔值。这是我的密码 但DownloadManager状态永远不会跳到DownloadManager上。状态\u
本文向大家介绍PHP下载大文件失败并限制下载速度的实例代码,包括了PHP下载大文件失败并限制下载速度的实例代码的使用技巧和注意事项,需要的朋友参考一下 1.问题: PHP在使用readfile函数定义下载文件时候,文件不可以过大,否则会下载失败,文件损坏且不报错; 2.原因: 这个是因为readfile读取文件的时候会把文件放入缓存,导致内存溢出; 3.解决:分段下载,并限制下载速度; 总结 以上
我正在使用Gradle构建工具,但我无法获得spark-core的源代码和文档。我已经搜索并申请了: 但它仍然不适合我。我想我缺少了一些东西,比如重建整个项目或下载这些片段。 我申请了<代码>。/gradlew cleanIdea idea也是如此。 当我尝试点击SparkConf.class上的命令并按下< code >下载源代码时,我得到< code > Sources not found f
1.1.1. 下载源代码 1.1.1. 下载源代码 我们使用Google公司的Gerrit系统来管理我们的 RokidOS 源代码。 对外开放的 RokidOS 源代码,每天凌晨4点自动同步。 注册成为 Rokid 平台开发者 登录方式 登录 openai.rokid.com ,会统一跳转到 Rokid开发者网站 进行授权认证(如果是未注册用户,请先注册),登录后会跳转到 gerrit 页面,右上
我正在创建一个PHP服务,用户可以从另一个服务器下载外部ZIP文件到具有PHP的服务器。下载后,我不断得到这个ZIP错误,说明文件已损坏/多部分。事实并非如此。我不能在linux服务器上提取它,但是当我将它复制到OSX机器上时,当我双击归档文件时,它可以完美地提取出来,但是terminal命令会产生同样的错误。我很困惑: 以下是文件(140MB)的链接: