精华内容
下载资源
问答
  • Chrome更新版本后发现打开本地Jquery easyui没有数据,查看控制台才发现如下问题解决的办法是设置启动参数"--allow-file-access-from-files"就OK了 转载于:https://www.cnblogs.com/DreamSea/p/3507485.html...

    Chrome更新版本后发现打开本地Jquery easyui没有数据,查看控制台才发现如下问题
    解决的办法是设置启动参数"--allow-file-access-from-files"就OK了

    转载于:https://www.cnblogs.com/DreamSea/p/3507485.html

    展开全文
  • 以线程方式异步请求 def download_image(image_url, filename): res = requests.get(image_url) res.raise_for_status() image = res.content with open(r'e:\path\mh\{}.jpg'.format(filename), 'wb') as fp: fp....

    1. 正常下载漫画,requests 阻塞式。

    import requests, bs4, time

    import asyncio, aiohttp

    def get_image_urls(url):

    res = requests.get(url)

    res.raise_for_status()

    soup = bs4.BeautifulSoup(res.text, 'lxml')

    imgs = soup.select('p.list img')

    for img in imgs:

    yield img.get('data-kksrc')

    def download_image(image_url, filename):

    res = requests.get(image_url)

    res.raise_for_status()

    image = res.content

    with open(r'e:\path\mh\{}.jpg'.format(filename), 'wb') as fp:

    fp.write(image)

    if __name__ == '__main__':

    site_url = 'https://www.kuaikanmanhua.com/web/comic/105372/'

    t_url = 'https://www.kuaikanmanhua.com/web/comic/15559/'

    image_urls = [image_url for image_url in get_image_urls(site_url)]

    t_list = [image_url for image_url in get_image_urls(t_url)]

    image_urls.extend(t_list)

    start = time.time()

    for filename, url in enumerate(image_urls, start=1):

    download_image(url, filename)

    print('总计:{:.2f}s'.format(time.time()-start))

    2. 异步包 asyncio 基本用法

    import asyncio

    import time

    async def asynct():

    print('asyncio...')

    await asyncio.sleep(1)

    def main():

    start = time.time()

    loop = asyncio.get_event_loop()

    tasks = [asynct() for i in range(10)]

    tasks_wait = asyncio.wait(tasks)

    loop.run_until_complete(tasks_wait)

    loop.close()

    print('total: {:.2f}s'.format(time.time()-start))

    if __name__ == '__main__':

    main()

    结果:

    asyncio...

    asyncio...

    asyncio...

    asyncio...

    asyncio...

    asyncio...

    asyncio...

    asyncio...

    asyncio...

    asyncio...

    total: 1.01s

    asyncio.sleep(1) 并不会阻塞运行,而是返回主线程继续运行,所以不会等待 10s 时间。

    3. 异步下载漫画

    import asyncio, aiohttp

    import requests, bs4

    import time

    import tqdm

    import concurrent.futures as futures

    async def download_images(url, filename):

    async with aiohttp.ClientSession() as session:

    async with session.get(url) as res:

    image = await res.content.read()

    with open(r'e:\path\mh\{}.jpg'.format(filename), 'wb') as fp:

    fp.write(image)

    def test():

    site_url = 'https://www.kuaikanmanhua.com/web/comic/105372/'

    t_url = 'https://www.kuaikanmanhua.com/web/comic/15559/'

    image_urls = [image_url for image_url in get_image_urls(site_url)]

    t_list = [image_url for image_url in get_image_urls(t_url)]

    image_urls.extend(t_list)

    start = time.time()

    loop = asyncio.get_event_loop()

    tasks = [download_images(url, filename) for filename, url in enumerate(image_urls, start=1)]

    coro = asyncio.wait(tasks)

    loop.run_until_complete(coro)

    loop.close()

    print('总计:{:.2f}s'.format(time.time() - start))

    if __name__ == '__main__':

    test()

    4. 以线程方式异步请求

    def download_image(image_url, filename):

    res = requests.get(image_url)

    res.raise_for_status()

    image = res.content

    with open(r'e:\path\mh\{}.jpg'.format(filename), 'wb') as fp:

    fp.write(image)

    def test1():

    site_url = 'https://www.kuaikanmanhua.com/web/comic/105372/'

    t_url = 'https://www.kuaikanmanhua.com/web/comic/15559/'

    image_urls = [image_url for image_url in get_image_urls(site_url)]

    t_list = [image_url for image_url in get_image_urls(t_url)]

    image_urls.extend(t_list)

    start = time.time()

    loop = asyncio.get_event_loop()

    for filename, url in enumerate(image_urls, start=1):

    loop.run_in_executor(None, download_image, url, filename)

    print('总计:{:.2f}s'.format(time.time() - start))

    if __name__ == '__main__':

    test1()

    这种方式是最快的,244张漫画图片只需要 0.11s。上面的方式大约都要 10s,奇怪的是 3 异步下载需要 9s 多,并没有比正常下载快多少。

    5. 异步下载加入进度条,更好的观察下载进度

    async def download_images(url, filename):

    async with aiohttp.ClientSession() as session:

    async with session.get(url) as res:

    image = await res.content.read()

    with open(r'e:\path\mh\{}.jpg'.format(filename), 'wb') as fp:

    fp.write(image)

    async def download_images_tqdm(image_urls):

    tasks = [download_images(url, filename) for filename, url in enumerate(image_urls, start=1)]

    fs = asyncio.as_completed(tasks)

    tqdm_iter = tqdm.tqdm(fs, total=len(image_urls))

    for future in tqdm_iter:

    await future

    def test2():

    site_url = 'https://www.kuaikanmanhua.com/web/comic/105372/'

    t_url = 'https://www.kuaikanmanhua.com/web/comic/15559/'

    image_urls = [image_url for image_url in get_image_urls(site_url)]

    t_list = [image_url for image_url in get_image_urls(t_url)]

    image_urls.extend(t_list)

    start = time.time()

    loop = asyncio.get_event_loop()

    loop.run_until_complete(download_images_tqdm(image_urls))

    loop.close()

    print('总计:{:.2f}s'.format(time.time() - start))

    if __name__ == '__main__':

    test2()

    6. 使用 concurrent.futures 线程方式请求

    def download_image2(*args):

    res = requests.get(args[0][1])

    res.raise_for_status()

    image = res.content

    with open(r'e:\path\mh\{}.jpg'.format(args[0][0]), 'wb') as fp:

    fp.write(image)

    def test3():

    site_url = 'https://www.kuaikanmanhua.com/web/comic/105372/'

    t_url = 'https://www.kuaikanmanhua.com/web/comic/15559/'

    image_urls = [image_url for image_url in get_image_urls(site_url)]

    t_list = [image_url for image_url in get_image_urls(t_url)]

    image_urls.extend(t_list)

    start = time.time()

    with futures.ThreadPoolExecutor(max_workers=16) as executor:

    executor.map(download_image2, enumerate(image_urls, start=1))

    print('总计:{:.2f}s'.format(time.time() - start))

    if __name__ == '__main__':

    test3()

    这种方式根据 max_workers 最大线程数设置不同值,得到的结果差距在 1s 左右,总共耗时 3.95s,比异步请求要快。

    总结:

    各运行两次

    正常下载: 9.44s, 9.87s

    异步下载: 9.54s, 3.58s

    线程方式异步下载: 0.11s, 0.23s

    线程方式下载: 3.87s, 4.32s

    最快且相对稳定的是 线程方式异步下载

    展开全文
  • 想用cors收发异步请求,我是这样做的:先造一下假数据尝试一下:var mydata = {id:timestamp,pass:"14444",title:"24444",tag:"34444",content:"544444"};var XHR = new XMLHttpRequest();XHR.open("POST", ...

    想用cors收发异步请求,我是这样做的:

    先造一下假数据尝试一下:

    var mydata = {

    id:timestamp,

    pass:"14444",

    title:"24444",

    tag:"34444",

    content:"544444"

    };

    var XHR = new XMLHttpRequest();

    XHR.open("POST", "http://localhost:8090/savemycollec");

    XHR.setRequestHeader('Content-Type', 'application/json');

    XHR.onreadystatechange = handler;

    XHR.send(JSON.stringify(mydata));

    服务端:

    res.header('Access-Control-Allow-Origin', '*');

    res.header('Access-Control-Allow-Headers', 'Content-Type, Content-Length, Authorization, Accept');

    res.header('Access-Control-Allow-Methods', 'POST,GET,DELETE,PUT');

    console.log(req.body);

    console.log(req.query);

    res.end();

    检测值,

    结果发现:

    仍然是报错:

    XMLHttpRequest cannot load http://localhost:8090/savemycollec. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:63342' is therefore not allowed access.

    貌似是不能直接接受json格式的请求?

    如果把请求中setRequestHeader去掉的话就不报错了但是传空值(收不到数据)

    请相关经验人士指点一二,

    res.set('Access-Control-Allow-Headers', 'Content-Type');

    res.set('Access-Control-Allow-Methods', 'GET, POST, DELETE, PUT');

    展开全文
  • 本文已同步到专业技术网站 ...首先, 概括下 vuex基本使用流程为: 在action中分发异步请求, 在异步回调中提交mutation,在mutation中修改state, 使用getters对state的值进行计算封装.为了能够很好的隔离页面view视图...

    e1eba1c894816a0cceb335b474d9401f.png

    本文已同步到专业技术网站 www.sufaith.com, 该网站专注于前后端开发技术与经验分享, 包含Web开发、Nodejs、Python、Linux、IT资讯等板块.

    首先, 概括下 vuex基本使用流程为: 在action中分发异步请求, 在异步回调中提交mutation,在mutation中修改state, 使用getters对state的值进行计算封装.

    为了能够很好的隔离页面view视图与数据的请求, 同时在使用vuex的action分发异步请求后,能够接收回调,进行了以下封装:

    一. http的封装

    http模块包含3个文件, config.js , http.js , api.js

    config.js 封装网关域名,及所有接口的方法名

    e0e5d43fa7b40f80e015a23767896edf.png

    http.js 封装axios基本的get, post请求

    fdf8e2be1e62ca8fb8273c25af39dff3.png

    api.js 封装接口名及对应的传输字段,回调响应数据

    df00a81da4ccc28e86a1c71cd55b24d1.png

    二. vuex模块的封装

    vuex通过action异步请求,为了回调执行状态,需在action中返回promise,针对该异步请求的封装, 分为2种情况:

    1. view层需要渲染的数据,例如:加载用户基本信息,加载商品列表,订单列表

    异步请求后,需要提交mutation,修改state,使用getters计算

    2. 执行某个功能动作,例如点赞,添加,删除

    异步请求后,不需要提交mutation,不需要使用state中的数据

    下图的获取用户基本信息属于情况1, 执行点赞动作属于情况2

    acb23b24257d88565b05bbc5825bdd49.png

    为了处理以上两种情况,做了以下封装 (假设:code=1,请求成功, code=0, 请求失败)

    0ca7adfc79343fc64816ac2967cfdc6d.png

    80685d0d2385f827a2cf12844d22c16d.png

    在页面调用如下:

    9b4d84861fc38ccbe0948517f28d2f80.png
    展开全文
  • 说白了就是一个程序设计的问题,基于事务的话可以:function save_if_success($transaction, $result){if ($result) $transaction->commit();else $transaction->rollback();}$db_ret = db();...
  • 同时发送两个ajax请求, 如果第一个请求响应失败, 第二个请求的响应数据浏览器还会接收到吗?
  • 今天碰到一个问题 异步请求等待中 cancel后会发生什么,网上找了下资料说取消的请求默认都会按请求失败处理,并调用请求失败delegate 查找到的资料具体解释了下ASIHTTPRequest取消异步请求 首先,同步请求是不能...
  • image.png项目中,这里默认选中优惠券类型的...最开始写法:defaultSelection()函数需要self.couponId、self.haveReduction、self.haveBalance等参数,但是这些参数都是ajax异步请求之后才获得的,但是此时mounted...
  • 抛出的异常: 异常表示,访问的连接是不安全的,所以资源的访问被阻止。 我们可以通道配置info.plist文件强制访问被阻止的资源,方法如下: 复制如下xml片段: <key>NSAppTransportSecurity<...
  • 前端发送异步请求加载ztree时,一直走error函数,并报405错误:Request method ‘GET’ not supported,无法从后台获取数据 原因: 检查发现,是jquery加载失败导致的,因此推测是jquery版本太低,不支持ajax新写法...
  • 说白了就是一个程序设计的问题,基于事务的话可以:function save_if_success($transaction, $result){if ($result) $transaction->commit();else $transaction->rollback();}$db_ret = db();...
  • ... <p>ip/validator.go <pre><code>package ip ...<p>Note the line that says <code>go validator.ValidateIp(currentIp)</code> in main.go.... it sends requests to IP addresses starting 172.217.22.174 and ...
  • 说白了就是一个程序设计的问题,基于事务的话可以:function save_if_success($transaction, $result){if ($result) $transaction->commit();else $transaction->rollback();}$db_ret = db();...
  • 什么是同步请求和异步请求

    千次阅读 2020-07-20 08:32:37
    一、同步、异步请求 浏览器发送请求给服务器,其有同步请求和异步请求两种方式。 1同步请求 什么叫同步请求呢? 就是在发送一个请求之后,需要等待...如果其中有一个信息填写错了,请求失败,又要全部重新填写,会很
  • 最近在改造一个旧系统的时候,前端换成了vue+axios,遇到一个坑,axios发送的请求,Spring MVC的controller里面获取参数失败. 经过查看官方文档后,解决了问题,记录一下: 前端代码(axios): fetchJobs: function() {...
  • jquery ajax异步请求

    2016-02-29 21:02:58
    jquery ajax 异步请求 最近在项目中开发了前端页面,写了个js类用于ajax请求,记录一下: /** * ajax post类 * @param url 请求地址 * @param data 请求的数据对象 * @callback_success 请求成功的回调函数 *...
  • ES6异步请求并行操作

    2019-03-11 21:39:20
    // 在ES6中可以将多个Promise.all异步请求并行操作: // 1、当所有结果成功返回时按照请求顺序返回成功; // 2、当其中有一个失败方法时,则进入失败方法; let promiseUtil = (url)=&gt;{ return new Promise...
  • 建立异步请求过程的4个步骤: a:new一个XHR对象 b:调用open方法 c:send一些数据 d:对过程进行监听,来知道服务器是不是正确地做出了响应,接着可以做一些事情 例子代码: var xhr = new XMLHttpRequest();//...
  • 关于AJAX异步请求

    2019-10-08 07:59:05
    一个HTTP请求由4个部分组成: ...*一个数字和文字组成的状态码,用来显示请求的成功和失败 *一个响应集合 *响应主体 其实AJAX就包含几条代码,其包含四个部分 创建 请求 响应 readState ...
  • 1. 利用JQ实现异步请求 $.ajax({ // 请求方式 method:'POST', // 请求资源 url:'xxxxxx.do', // 请求参数 data:'username=tom&password=123', // 成功回调 success:function(data){ // data请求返回...
  • 如果在你的uni-app项目里,出现以下情况: 1) 你希望用第1个uni....那么很显然,你需要让uni.request()异步请求变成同步请求,因为uni-app的官网没有提供同步请求方法uni.requestSync(); 所以我们需要使用Promi.
  • 在项目中,经常会遇到多个相互依赖的异步请求。如有a,b,c三个ajax请求,b需要依赖a返回的数据,c又需要a和b请求返回的数据。如果采用请求嵌套请求的方式自然是不可取的。导致代码难以维护,如何请求很多。会出现很多...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,103
精华内容 441
关键字:

异步请求失败