这篇文章主要介绍了python分布式爬虫中的任务路由有什么用,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。
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分布式爬虫中的任务路由有什么用内容对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,遇到问题就找亿速云,详细的解决方法等着你来学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。