scrapyd 批量清除pending任务

 

一、问题

由于爬虫报错/生产环境更换等原因造成定时的scrapy任务队列 pending 等待的太多

(通过http://127.0.0.1:6800/listjobs.json?project=myproject 查询到 pending 的爬虫队列竟然有600+....)

 

二、解决方案

进入 用户目录下-->dbs 目录,删除 pending 的scrapy项目db文件即可

因为 dbs 目录下存储着项目数据(包括爬虫任务队列)

如下图(scrapy项目为MyToken, 此处删除 MyToken.db)

 

 

:查看scrapyd官方文档(https://scrapyd.readthedocs.io/en/stable/config.html),我们可以发现:

dbs_dir: The directory where the project databases will be stored (this includes the spider queues).

中断pending状态指的是中断已经产生,但尚未被CPU处理的状态。中断有四种状态,分别为inactive、pending、active和active and pending,当产生中断时,中断会进入pending状态等待CPU处理[^1]。 产生中断并进入pending状态的方式有多种。对于SGI中断,可以通过写入GICD_SGIR寄存器和GICD_SPENDSGIRn寄存器来使其进入pending状态;对于外设中断,既可以通过硬件产生物理信号到GIC,也可以通过写入GICD_ISPENDRn寄存器来产生中断并进入pending状态。当Distributor的中断转发功能以及CPU interface的中断信号发送功能使能时,对于SGI中断,如果软件写入GICD_SGIR寄存器指定了目标处理器,或目标寄存器的软件写入GICD_SPENDESGIRn寄存器的源处理器和中断ID等对应字段;对于SPI和PPI中断,如果外设发出了中断信号,或者软件上写入了一个GICD_ISPENDR寄存器,中断会转换/增加到pending状态[^1]。 清除中断pending状态的方法因中断类型而异。对于SGI,当对应目标处理器的软件写入寄存器GICD_CPENDSGIRn的对应bit时,pending状态会被移除;对于SPI和PPI,如果是电平敏感的中断,若该中断的pending状态是由于输入的物理中断信号,当该信号被解除断言时,pending状态将会被移除;如果是边沿触发的中断,若该中断是由于输入的物理边缘触发中断信号,或者是写入GICD_ISPENDRn寄存器造成的pending,可以通过写入GICD_ICPENDRn寄存器来解除pending状态。此外,在一些代码实现中,如在保证同一个CPU上的软中断以串行方式运行的代码里,会通过`set_softirq_pending(0)`清除位图来清除pending状态;在硬件实现中,如使用axi_lite接口时,当`host_write_clear`有效,即Host写清除命令时,`irq_pending`寄存器会与`~host_wdata`按位与,从而清除相应的pending状态[^1][^2][^3]。 ```python # 以下是一个简单示意代码,并非完整可运行代码 # 假设这是一个模拟清除中断pending状态的函数 def clear_pending_status(interrupt_type, register_value): if interrupt_type == "SGI": # 模拟写入GICD_CPENDSGIRn寄存器 print("写入GICD_CPENDSGIRn寄存器清除SGI中断pending状态") elif interrupt_type == "SPI" or interrupt_type == "PPI": if register_value == "GICD_ICPENDRn": print("写入GICD_ICPENDRn寄存器清除SPI/PPI中断pending状态") else: print("根据电平信号等其他方式清除SPI/PPI中断pending状态") elif interrupt_type == "softirq": print("调用set_softirq_pending(0)清除软中断pending状态") elif interrupt_type == "host": print("Host写清除命令清除中断pending状态") # 示例调用 clear_pending_status("SGI", None) ```
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值