Python爬虫管理工具ScrapydWeb如何取消pending jobs
安装更新
pip install -U git+https://github.com/my8100/scrapydweb.git
GitHub
Python爬虫管理工具ScrapydWeb如何取消pending jobs
1 回复
要取消ScrapydWeb中的pending jobs,可以通过Scrapyd的HTTP API直接操作。以下是具体方法:
import requests
# Scrapyd服务器地址
SCRAPYD_URL = 'http://localhost:6800'
def cancel_pending_jobs(project_name):
"""
取消指定项目的所有pending jobs
"""
# 获取所有jobs列表
jobs_url = f'{SCRAPYD_URL}/listjobs.json?project={project_name}'
response = requests.get(jobs_url)
jobs_data = response.json()
# 遍历pending jobs并取消
pending_jobs = jobs_data.get('pending', [])
cancelled_count = 0
for job in pending_jobs:
job_id = job['id']
cancel_url = f'{SCRAPYD_URL}/cancel.json'
payload = {
'project': project_name,
'job': job_id
}
cancel_response = requests.post(cancel_url, data=payload)
if cancel_response.json().get('status') == 'ok':
cancelled_count += 1
print(f'已取消job: {job_id}')
print(f'共取消了 {cancelled_count} 个pending jobs')
# 使用示例
if __name__ == '__main__':
# 替换为你的项目名称
cancel_pending_jobs('your_project_name')
核心原理:
- 先调用
/listjobs.json接口获取所有jobs状态 - 从返回的JSON中提取
pending列表 - 对每个pending job调用
/cancel.json接口取消
补充说明:
- 确保Scrapyd服务正在运行
- 项目名称需要与实际一致
- 可以通过ScrapydWeb界面查看项目名称
一句话建议: 直接调用Scrapyd的API接口批量取消pending jobs最有效。

