Files
crawlab/documentation/Architecture/TaskExecution.md
2019-12-05 12:06:38 +08:00

1017 B
Raw Blame History

任务执行

Crawlab的任务执行依赖于shell。执行一个爬虫任务相当于在shell中执行相应的命令因此在执行爬虫任务之前要求使用者将执行命令存入数据库。执行命令存在spiders表中的cmd字段。

任务执行的架构示意图如下。

当爬虫任务被派发时主节点会在Redis中的tasks:<node_id>(指定工作节点)和tasks:public(任意工作节点)派发任务,也就是RPUSH命令。

工作节点在启动时会起N个执行器通过环境变量CRAWLAB_TASK_WORKERS配置默认为4每个执行器会轮训Redis的消息队列优先获取指定节点消息队列tasks:<node_id>,如果指定队列中没有任务,才会获取任意节点消息队列中的任务tasks:public

执行过程的具体情况就不细述了,详情请见源码