爬虫的多进程插入数据到mongodb, 数据对不上

最近在用多进程爬微博的api, getPage 函数是一次api请求一个页面,一次api请求返回10条个人动态,然后写入到mongodb函数库里面。

我的逻辑是例如这个人的微博量很多,例如有300多页,我就想着多进程一次请求9个页面,然后赞同几秒,然后继续一次请求9个页面,循环直到请求完

如下面这里最后不是应该爬取到 993=243条动态么,但是我mongodb数据库显示才100条,而且有好几次数据都都对不上,我有点奇怪,apply_async, 但是join了不是会等待所有进程结束的么,为什么最后的数量对不上呢?

if __name__ == '__main__':
    p = Pool(9)
    x = 1
    y = 10
    while y <= 30:
        for i  in range(x,y):
            p.apply_async(getPage, args = (i,))
        print('9 page done!')
        time.sleep(random.randint(3,5)+random.random())
        x += 10
        y += 10
    p.close()
    p.join()
    print('Done!')
阅读 1.7k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题