栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python分布式爬虫中的任务路由是什么?

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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学习指路:PyThon学习网教学中心。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/11697.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号