Open hijack911 opened 1 year ago
需知
升级feapder,保证feapder是最新版,若BUG仍然存在,则详细描述问题
pip install --upgrade feapder
问题 feapder 版本: 1.8.5 添加队列进程的日志如下
2023-03-23 10:26:49.636 | INFO | feapder.core.spiders.task_spider:get_task:line:234 | 无待做任务,尝试取丢失的任务 2023-03-23 10:26:49.658 | DEBUG | feapder.buffer.request_buffer:is_exist_request:line:46 | request已存在 url = https://httpbin.org/headers 2023-03-23 10:26:49.658 | INFO | feapder.core.spiders.task_spider:start_monitor_task:line:210 | 添加任务到redis成功 共1条 2023-03-23 10:26:54.673 | INFO | feapder.core.spiders.task_spider:get_task:line:229 | redis 中剩余任务0 数量过小 从mysql中取任务追加 2023-03-23 10:26:54.689 | INFO | feapder.core.spiders.task_spider:get_task:line:234 | 无待做任务,尝试取丢失的任务 2023-03-23 10:26:54.712 | DEBUG | feapder.buffer.request_buffer:is_exist_request:line:46 | request已存在 url = https://httpbin.org/headers 2023-03-23 10:26:54.713 | INFO | feapder.core.spiders.task_spider:start_monitor_task:line:210 | 添加任务到redis成功 共1条 2023-03-23 10:26:59.728 | INFO | feapder.core.spiders.task_spider:get_task:line:229 | redis 中剩余任务0 数量过小 从mysql中取任务追加 2023-03-23 10:26:59.744 | INFO | feapder.core.spiders.task_spider:get_task:line:234 | 无待做任务,尝试取丢失的任务 2023-03-23 10:26:59.767 | DEBUG | feapder.buffer.request_buffer:is_exist_request:line:46 | request已存在 url = https://httpbin.org/headers 2023-03-23 10:26:59.767 | INFO | feapder.core.spiders.task_spider:start_monitor_task:line:210 | 添加任务到redis成功 共1条
截图 MYSQL
代码
只复制了主要函数
__custom_setting__ = dict( ITEM_FILTER_ENABLE=True, # item 去重 REQUEST_FILTER_ENABLE=True, # request 去重 ITEM_FILTER_SETTING=dict( filter_type=3, # 永久去重(BloomFilter) = 1 、内存去重(MemoryFilter) = 2、 临时去重(ExpireFilter)= 3、轻量去重(LiteFilter)= 4 expire_time=-1, redis_url="redis://127.0.0.1:6379/2", ), REQUEST_FILTER_SETTING=dict( absolute_name="", filter_type=3, # 永久去重(BloomFilter) = 1 、内存去重(MemoryFilter) = 2、 临时去重(ExpireFilter)= 3、 轻量去重(LiteFilter)= 4 expire_time=60 * 60 * 24 * 7, # 过期时间1个月 redis_url="redis://127.0.0.1:6379/2", ) ) def start_requests(self, task): task_id = task.id url = task.url yield feapder.Request(url, task_id=task_id) def parse(self, request, response: Response): # 提取网站title print(response.content) # print(response.xpath("//title/text()").extract_first()) # # 提取网站描述 # print(response.xpath("//meta[@name='description']/@content").extract_first()) print("网站地址: ", response.url) item = Item() # 声明一个item item.table_name = "ent_test" # 指定存储的表名 item.content = response.text # item.update(**response.json) # mysql 需要更新任务状态为做完 即 state=1, yield self.update_task_batch(request.task_id, ) # yield item
TaskSpider 和 BatchSpider 种子不要参与去重,去重逻辑可以在数据库里建唯一索引。 否则你重复跑的时候已采集过的种子无法再次下发了
TaskSpider 种子 是指的什么? 数据库里的 id 不就是唯一的吗?
需知
升级feapder,保证feapder是最新版,若BUG仍然存在,则详细描述问题
问题 feapder 版本: 1.8.5 添加队列进程的日志如下
截图 MYSQL
代码
只复制了主要函数