scrapydでscrapyプロジェクトを配備する


scrapydの紹介とインストール
scrapydはnginx,tomcatのようなサーバで、webインタフェースが露出し、私たちのscrapy爬虫類はwebappとして導入され、webapiを通じて開閉するなどの操作を行います.
インストール:
pip install scrapyd

私たちが導入する前提は、自分がすでにscrapyプロジェクトを持っていることです.いいえ、具体的には参考にしてください.https://blog.csdn.net/mingover/article/details/80717974
サーバの使用とオープン
cd E:scrapyd_のようなディレクトリを新規作成folddspider、これは後の配置ファイルを置くためのspidedコマンドでサービスを開きます.
>cd E:\scrapyd_fold\dspider
>scrapyd

デフォルトのアクセスアドレスはhttp://localhost:6800/
jobsが見えます.中の表の内容は私たちが配置するscrapyサービスです.まだ配置されていないので、何もありません.
プロファイル
    * /etc/scrapyd/scrapyd.conf (Unix)
    * c:\scrapyd\scrapyd.conf (Windows)
    * /etc/scrapyd/conf.d/* (in alphabetical order, Unix)
    * scrapyd.conf
    * ~/.scrapyd.conf (users home directory)

上のいくつかのプロファイルは有効になります.具体的な構成は公式サイトの説明を直接見てください.http://scrapyd.readthedocs.io/en/stable/config.htmlscrapydがサーバに置かれている場合はbind_を忘れないでください.addressは0.0.0.0に変更しipへのアクセスを制限しないことを示す
爬虫類プログラムを導入する
scrapyd-clientをインストールします.これはパッケージ化ツールのようなものです.私たちのscrapyプログラムをeggにパッケージ化してscrapydに投げます.これはmavenのようなパッケージ化と配置のツールです.
pip install scrapyd-client

scrapyプロジェクトのルートディレクトリに移動し、パッケージと配置コマンドを実行します.
(p3scrapy) λ scrapyd-deploy nextst -p dspider
Packing version 1531231887
Deploying to project "dspider" in http://localhost:6800/addversion.json
Server response (200):
{"node_name": "gih-d-15336", "status": "ok", "project": "dspider", "version": "1531231887", "spiders": 75}

いくつかの注意事項:
  • scrapy listが使用可能であることを確認する.
  • scrapy.cfgにおける[deploy]->[deploy:xxx]このxxxはカスタマイズされた
  • です.
  • pythonが検索できるパスにパスを追加しsettings.jsに
  • を加える
    import sys
    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    sys.path.insert(0,os.path.join(BASE_DIR,'dspider'))

    Windowsではscrapyd-clientのツールに問題があり、exeやbat実行可能なファイルがなく、自分で作成する必要があります.
    @echo off
    
    "xxxx\python_env\p3scrapy\Scripts\python.exe" "xxx\python_env\p3scrapy\Scripts\scrapyd-deploy" %1 %2 %3 %4 %5 %6 %7 %8 %9
  • scrapydを使用すると、天井*が配置されているときに、scrapyd-deploy nextst-p dspiderが間違って投げられるという問題があります.
  •   File "d:
    etease\work\code\python_env\p3scrapy\lib\importlib\__init__.py"
    , line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "", line 994, in _gcd_import File "", line 971, in _find_and_load File "", line 955, in _find_and_load_unlocked File "", line 656, in _load_unlocked File "", line 626, in _load_backward_compatible File "c:\users\denggu~1\appdata\local\temp\dspider-1531231546-kluup944.egg\dspider\settings.py", line 183, in File "E:\python36\Lib\logging\config.py", line 795, in dictConfig dictConfigClass(config).configure() File "E:\python36\Lib\logging\config.py", line 566, in configure '%r: %s' % (name, e)) ValueError: Unable to configure handler 'error': [Errno 2] No such file or directory: 'c:\\users\\denggu~1\\appdata\\local\\temp\\dspider-1531231546-kluup944.egg\\error.log'

    これはscrapydを使って配備したとき、BASE_DIRが上書きされ、多くのロゴが間違った場所を探してエラーを表示し、LOG_を新規作成します.DIR、パスを書き込み、BASEを使用しないでください.DIRはシステムの中で组み合わせます!!!(この問題は私に1日探して、主に最初はerror.logを使って、とても規範的なlogで、ずっとscrapydの自分のlogだと思っていましたが、実際には、このerror.logはコードの中に入っていて、そのpathがBASE_DIRを使っているので、経路が間違っていて、間違いを招きました)
    実はこの問題は正確にはosです.path.dirname(os.path.dirname(os.path.abspath(file))という列に問題があり、この生成経路がおかしくなって、何度も試して、os.path.abspath(file)はこの経路c:usersxxxxappdatalocaltempdspider-1531277157-jjjulp 4 yqである.egg\dspider\settings.py .パッケージ化の時に経路が変わったはずです(ちょっと不思議ですが、パッケージ化の時(eggを打ってサービス側に投げて解析した時かもしれません)、なぜこのpyを実行しますか?)
    元サイト:https://stackoverflow.com/questions/50453479/valueerror-while-deploying-scrapy
    公式アクセスとインタフェースの紹介
    どのような項目が投げ込まれたかを確認しますhttp://127.0.0.1:6800/listprojects.json
    spiderを実行
    (p3scrapy) λ curl http://localhost:6800/schedule.json -d project=dspider -d spider=StItemDetail
    {"node_name": "gih-d-15336", "status": "ok", "jobid": "a648e682844c11e8946ae0d55e1da53a"}

    実行後、表示http://localhost:6800/jobs実行中のjob(spider)が表示されます
    ジョブを閉じる
    (p3scrapy) λ curl http://localhost:6800/cancel.json -d project=dspider -d job=cd581540844d11e8a017e0d55e1da53a
    {"node_name": "gih-d-15336", "status": "ok", "prevstate": "running"}

    scrapyのログを表示するにはどうすればいいですか?
    一つはspiderの端末ロゴで、http://localhost:6800/jobs中には、他のカスタムロゴが見えますが、プロジェクトがどこに置かれているかを見てみましょう.
    scrapydの構成などの紹介
    XXX/python_を表示できますenv\p3scrapy\Lib\site-packages\scrapyd/default_scrapyd.confの中の内容、相応の配置を見ることができて、具体的な問題、自分で公式サイトを見ます
    [scrapyd]
    eggs_dir    = eggs
    logs_dir    = logs
    items_dir   =
    jobs_to_keep = 5
    dbs_dir     = dbs
    max_proc    = 0
    max_proc_per_cpu = 4
    finished_to_keep = 100
    poll_interval = 5.0
    bind_address = 127.0.0.1
    http_port   = 6800
    debug       = on
    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
    daemonstatus.json = scrapyd.webservice.DaemonStatus
    

    SpiderKeeperを使用してspiderとjobsを管理
    spiderd-clientを使用してパッケージ化と導入を行い、同時にspderdを使用してjobを作成し、実行しますが、コマンドラインであり、不便です.spiderKepperを直接使用してインタフェースを表示することができます.
    spiderKepperはウェブアプリケーションであり、spidedを指すウェブアクセスインタフェースを構成すればよい.使いやすいので、公式サイトを直接見ればいいのですが、
    簡単な説明:
    1、ここに穴があって、时にはeggを配置して成功しないとしても、彼は成功を示して、jobを建てる时、spiderが见つからないで、少しぼんやりしています2、spiderkeeperは地元で先にeggを梱包した后にこのeggをサービス端に投げて、インタフェースはヒントがあって、投げ终わった后にspidedの中でこのプロジェクトがあるかどうかを见ることを覚えていますhttp://xxxxx:5000/api.html
    具体的な参考:https://github.com/DormyMo/SpiderKeeper
    sracpydの一般的な操作
    运用spiderKeeperはOKですが、ちょっとストレートではないので、间违いがあっても投げません....保険ポイントはspidedのapiインタフェースを直接使用します.
    パッケージ:
    scrapyd-deploy –build-egg output4.egg
    プロジェクトの導入:
    curl http://localhost:6800/addversion.json -F project=oo -F version=1 -F egg=@nextspi\output4.egg eggオプションの後ろにファイルがあります
    パッケージ化と導入:
    scrapyd-deploy target -p dspider
    この方式を用いるとscrapy.cfgのdeployは、次のように構成されます.
    [deploy:target]
    url = http://localhost:6800/
    project = dspider

    アイテムを削除するには
    curl http://localhost:6800/delproject.json -d project=dspider
    項目を列挙:
    curl http://localhost:6800/listprojects.json
    ジョブを開く
    http://127.0.0.1:6800/schedule.json -d project=myob -d spider=StItemDetail
    jobの表示
    http://127.0.0.1:6800/
    関job
    curl http://localhost:6800/cancel.json -d project=dspider -d job=46028aee84bc11e89427e0d55e1da53a
    公式サイトは直接見つけることができます:https://scrapyd.readthedocs.io/en/latest/api.html#cancel-json