跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 关于爬虫异步多线程的问题
未分類
3 6 月 2020

关于爬虫异步多线程的问题

关于爬虫异步多线程的问题

資深大佬 : yuban10703 0

最近一直在研究 py 的异步……

所以想把之前整的一个 P 站收藏夹的爬虫换成异步,但是想了想,貌似收藏夹翻页的部分好像整不了异步?..

爬虫代码

(写的很乱…..

大佬有話說 (11)

  • 資深大佬 : ClericPy

    前几天刚看到的…
    Guide to Concurrency in Python with Asyncio ⋆ Mark McDonnell – https://www.integralist.co.uk/posts/python-asyncio/

    其他的搜索结果 https://www.clericpy.top/newspaper/articles.query.html?query=asyncio&date=&start_time=&end_time=&source=&lang=ANY&order_by=ts_create&sorting=desc&limit=10&offset= 只看四星以上结果吧, 这个过滤器当初忘了写… 过几天再补

    然后, asyncio 用的时候和多线程有点像, 但是又很多区别, 官方如果能设计的像 gevent 那种就好了… 不吐槽了, 大致要看的就是 Future 的思想, 然后知道 asyncio.Task 是一个已经在执行的协程任务, 如果你的数据库操作库不支持协程, 就只能丢到一个 “线程 executor” 里面做一个协程包装(也就是丢给线程, 但可以被 await)

    至于你说的从上一步结果里取, 那就是个串行关联了, 因为第二步可能也要用协程, 所以就尽量别用 add_done_callback, 做好 await 就行了

    多数人用协程的时候很少会开多个线程然它单独跑一个事件循环, 因为一不小心通信过程会遇到 different loop thread 之类的 runtime error, 所以用 executor 包装下更省心

    没代码也说不了太多了

  • 資深大佬 : renmu123

    你可以获取全部资料后一口气存到数据库,没必要获取一次存一次

  • 主 資深大佬 : yuban10703

    @renmu123 emm, api 的请求之间有 5s 左右的间隔,主要是想利用这些时间….

  • 資深大佬 : jugelizi

    哈哈 这种一般我丢任务队列
    一个任务去抓列表 存数据库 再推送队列
    另外一个不断消费

  • 主 資深大佬 : yuban10703

    @jugelizi 我去研究研究

  • 資深大佬 : daimiaopeng

    我用 cpp 写的多线程 http 库可以了解一下: https://github.com/daimiaopeng/fast_requests

  • 主 資深大佬 : yuban10703

    @daimiaopeng (☆▽☆)

  • 資深大佬 : ruanimal

    你想异步需要换库,requests 得换成对应的异步库,还有数据库相关的库也是,不然异步没啥意义

  • 資深大佬 : octobersnow

    @daimiaopeng 最快在哪里?

  • 資深大佬 : black11black

    建议老实先看一遍庞杂的 aysncio 文档,了解一下异步大概是什么,你这些问的都哪跟哪啊

  • 資深大佬 : coderunI

    你需要 redis

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具