python分布式爬虫中的任务路由

745次阅读
没有评论

python分布式爬虫中的任务路由

我们讲的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免费测试

相关文章:

版权声明:wuyou2021-05-22发表,共计1575字。
新手QQ群:570568346,欢迎进群讨论 Python51学习