注意,
在云函数上运行 SCrapyd 应用示例,对于存量的 Scripyd 应用
通过把所有的依赖导出到 vendor
目录,项目结构更加清晰:
pyenv exec pip3 install -r requirements.txt -t vendor
## 采用pyenv执行
pyenv exec python3 launch.py
## 或者
python3 launch.py
## 触发执行
curl http://localhost:9000/schedule.json -d project=default -d spider=toscrape-css
zip -r scrapy_demo_1.0.zip . -x "*.git*" -x "*.__MACOSX*"
函数配置:
函数类型 Web 函数
运行环境 Python 3.7
资源类型 CPU
内存 512MB
执行超时时间 300秒
函数网络 设置对应的VPC网络
文件存储 需要挂载VPC所在的CFS
其中 内存配置
和 执行超时时间
根据应用具体的情况进行配置
-
添加
APIGW
触发器,⚠️ 注意不要开启 集成响应 功能 -
获取
APIGW
的触发器的地址为: https://service-xxxxx-1253970226.gz.apigw.tencentcs.com/release/python_simple_demo -
通过POST方法触发 Scrapy执行,例如
curl --location --request POST 'https://service-xxx.gz.apigw.tencentcs.com/release/schedule.json' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode 'project=default' \ --data-urlencode 'spider=toscrape-css'
URL="https://service-xxxx-1253970226.gz.apigw.tencentcs.com/release/schedule.json"
echo -n "project=default&spider=toscrape-css" > test.txt | \
cat test.txt | \
ab -p /dev/stdin -T 'application/x-www-form-urlencoded' \
-n 100 -c2 $URL
SCF 的在线版本IDE Cloud Studio
对于Python 3.7的支持即将发布,可以通过云端环境直接安装依赖,避免环境差异带来的兼容性问题:
-
打包且不包含第三方依赖:
zip -r scrapy_demo_1.0.zip . -x "*.git*" -x "*.__MACOSX*" -x "vendor"
-
上传 Zip 文件进行函数部署
-
打开 云端IDE的 Terminal,执行以下命令:
cd src pip3 install -r requirements.txt -t vendor
-
重新部署函数
如果执行时间超过默认允许的超时时间限制,需要开启异步执行模式,可以支持最大 24 小时的执行时间,参考文档:https://cloud.tencent.com/document/product/583/51519
创建函数:
- 可以通过挂载
CFS
,把结果持久化到共享文件存储中,修改HTTPCACHE_DIR
环境变量即可,参考链接:https://cloud.tencent.com/document/product/583/46199 COS
原生支持S3
协议,Scrapy的Feed_Format
支持对应的协议,可以通过配置把内容写入到对象存储中 [用法待补充], 查看链接
- QuotesBot: github repo
- Serverless Scraping with Scrapy, AWS Lambda and Fargate – a guide Link