一、写在前面
在上一篇博客中提到过对于网络爬虫这种包含大量网络请求的任务,是可以用Celery来做到加速爬取的,那么,这一篇博客就要具体说一下怎么用Celery来对我们的爬虫进行一个加速!
二、知识补充
1.class celery.group
group这个类表示创建一组要并行执行的任务,不过一组任务是懒惰的,所以你需要运行并对其进行评估。要了解这个类,可以查看文档,或者在Pycharm中直接Ctrl+左键就能直接查看源码了,如下图:
Python资源共享群:626017123
当然了,直接看源码还不够,最好还是自己动下手。所以先创建一个test.py,其中代码如下:
1 from celery import Celery 2 3 4 app = Celery("test", broker="redis://127.0.0.1:6379", backend="redis://127.0.0.1:6379") 5 6 7 @app.task 8 def add(x, y): 9 return x + y 10 11 12 if __name__ == '__main__': 13 app.start()
然后运行Celery服务器,再在test.py所在目录下创建一个test_run.py用于测试,其中代码如下:
1 from celery import group 2 from .test import add 3 4 5 lazy_group = group(add.s(2, 2), add.s(4, 4)) 6 print(type(lazy_group)) 7 result = lazy_group() 8 print(result) 9 print(type(result)) 10 print(result.get())
在Pycharm中运行test_run.py,得到的结果如下:
<class 'celery.canvas.group'> fe54f453-eb9c-4b24-87e3-a26fab75967f <class 'celery.result.GroupResult'> [4, 8]