美文网首页
scapyd scrapyd-client scrapy使用ht

scapyd scrapyd-client scrapy使用ht

作者: cdz620 | 来源:发表于2020-03-02 14:17 被阅读0次

    基本概念

    scrapyd

    • scrapyd是使用http方式,管理维护scrapy工程应用服务器

    • 管理scrapy工程部署,可以上传部署工程

    • 管理spider,启动,停止,删除spider

    • 管理scrapy日志,数据输出

    • 官方文档url

    scrapyd-client

    • 使用scrapyd-client,打包scrapy工程

    • scrapyd-deploy 上传scrapy工程到scrapd应用服务器

    • github 官网url

    安装过程

    非Ubuntu,以下是mac平台的安装过程

    • pip install scrapyd

    • pip install scrapyd-client

    scrapyd 配置

    • 文档参考: configurations

    • mac平台下安装的scrapyd,默认没有生成配置文件,最好先手动配置好文件,以免使用过程中碰到莫名其妙的问题,本人走过弯路

    • 配置过程按照官网所谓通俗的做法如下

    sudo mkdir /mnt/scrapyd   # 目录自己定
    cd /mnt/scrapyd/
    mkdir eggs
    mkdir logs
    mkdir items
    mkdir dbs
    sudo mkdir /etc/scrapyd/
    cd /etc/scrapyd/
    
    vi scrapyd.conf  配置如下:
    
    [scrapyd]
    eggs_dir    = /mnt/scrapyd/eggs
    logs_dir    = /mnt/scrapyd/logs
    logs_filename = {spider}-{Y}{m}{d}.log
    items_dir   =
    jobs_to_keep = 5
    dbs_dir     = /mnt/scrapyd/dbs
    max_proc    = 0
    max_proc_per_cpu = 4
    finished_to_keep = 100
    poll_interval = 5
    bind_address = 0.0.0.0
    http_port   = 6100
    debug       = off
    runner      = scrapyd.runner
    application = scrapyd.app.application
    launcher    = scrapyd.launcher.Launcher
    webroot     = scrapyd.website.Root
    [services]
    schedule.json     = scrapyd.webservice.Schedule
    cancel.json       = scrapyd.webservice.Cancel
    addversion.json   = scrapyd.webservice.AddVersion
    listprojects.json = scrapyd.webservice.ListProjects
    listversions.json = scrapyd.webservice.ListVersions
    listspiders.json  = scrapyd.webservice.ListSpiders
    delproject.json   = scrapyd.webservice.DeleteProject
    delversion.json   = scrapyd.webservice.DeleteVersion
    listjobs.json     = scrapyd.webservice.ListJobs
    
    

    启动服务:/usr/bin/nohup /usr/local/bin/scrapyd > /dev/null 2>&1 &

    scrapy项目scrapy.cfg 配置

    • 配置如下:
    
    [settings]
    default = get_app_analytics.settings
    
    [deploy:ios_analytics]
    url = http://localhost:6800/
    project = ios_get_app_analytics
    
    
    • deploy:target 若只有一个工程target可以省略,不管是否只有一个工程,统一格式都按照这么写

    • project:scrapy工程名

    scrapyd-client 使用scrapy-deploy部署

    1. cd 切换到scrapy.cfg所在目录

    2. 执行 scrapyd-deploy -v r1.0.0 ios_analytics -p ios_get_app_analytics

    注意事项

    ERROR: Error caught on signal handler: <bound method ?

    • 原因:没有scrapyd.conf配置文件,scrapyd运行采用默认的配置,出错。stackflow上有解释是与FeedExports功能相关,但是官方文档默认FeedExports是禁用的,应该不受影响。无法找出具体原因,之前出问题是没有配置scrapyd.conf急于上线,手动增加配置文件后,修复问题。

    unexpected keyword argument ‘_job’

    • 原因:继承Spider,重写init()函数,没有使用与接口同样的格式,

    • 解决:注意必须要有**kwargs,参数,此参数用来向Spider传递参数

    使用例子

    普通调度

    curl http://localhost:6800/schedule.json -d project=ios_get_app_analytics -d spider=get_app_detail

    传参数调度

    curl http://localhost:6800/schedule.json -d project=ios_get_app_analytics -d spider=get_app_detail -d setting=APP_USER=xxx@icloud.com -d setting=APP_PASSWORD=haha

    相关文章

      网友评论

          本文标题:scapyd scrapyd-client scrapy使用ht

          本文链接:https://www.haomeiwen.com/subject/thxjchtx.html