我们讲的celery框架因为功能方面较为全面,很多小伙伴在学完之后都搭建好了框架,并跟小编反馈celery非常使用。考虑了大家的接受能力后,小编决定进一步讲讲celery的进阶用法,相信看到这里很多小伙伴已经迫不及待想往下看了。我们先提出一个叫任务路由的概念,小伙伴们可以带着疑问继续往下学习。
celery的一个高级特性了,它叫做任务路由。直白点说,它可以规定哪个分布式节点能做哪些任务,不能做哪些任务。它的存在可以让资源分配更加合理。
# coding:utf-8 import os from datetime import timedelta from celery import Celery from kombu import Exchange, Queue from config.conf import get_broker_or_backend from celery import platforms # 允许celery以root身份启动 platforms.C_FORCE_ROOT = True worker_log_path = os.path.join(os.path.dirname(os.path.dirname(__file__))+'/logs', 'celery.log') beat_log_path = os.path.join(os.path.dirname(os.path.dirname(__file__))+'/logs', 'beat.log') tasks = ['tasks.login', 'tasks.user'] # include的作用就是注册服务化函数 app = Celery('weibo_task', include=tasks, broker=get_broker_or_backend(1), backend=get_broker_or_backend(2)) app.conf.update( CELERY_TIMEZONE='Asia/Shanghai', CELERY_ENABLE_UTC=True, CELERYD_LOG_FILE=worker_log_path, CELERYBEAT_LOG_FILE=beat_log_path, CELERY_ACCEPT_CONTENT=['json'], CELERY_TASK_SERIALIZER='json', CELERY_RESULT_SERIALIZER='json', CELERY_QUEUES=( Queue('login_queue', exchange=Exchange('login', type='direct'), routing_key='for_login'), Queue('user_crawler', exchange=Exchange('user_info', type='direct'), routing_key='for_user_info'), Queue('fans_followers', exchange=Exchange('fans_followers', type='direct'), routing_key='for_fans_followers'), )
上述代码指定了有`login_queue`、`user_crawler`、`fans_followers`三个任务队列。它们分别的作用是登录、用户信息抓取、粉丝和关注抓取。python爬虫celery如何安装
总的来说,任务路由的作用更像是一个指挥者,给不同的爬虫分配任务让它们去爬取数据,同时规定了不能去的区域,是不是很实用呢。
神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试