斯皮里德的客户

scrapyd-client的Python项目详细描述


https://secure.travis-ci.org/scrapy/scrapyd-client.png?branch=master

scrapyd客户端是scrapyd的客户端。它提供了scrapyd-deploy实用程序,允许您将项目部署到scrapyd服务器。

如何工作

将项目部署到scrapyd服务器通常需要两个步骤:

  1. Eggifying你的项目。您需要为此安装setuptools。请参见下面的Egg Caveats
  2. 通过addversion.json端点将egg上载到scrapyd服务器。

scrapyd-deploy工具自动生成egg并将其推送到目标scrapyd服务器。

目标

您可以在项目的scrapy.cfg文件中定义scrapyd目标。示例:

[deploy:example]
url = http://scrapyd.example.com/api/scrapyd
username = scrapy
password = secret

当您的目标需要用其url在scrapy.cfg中定义时,您可以使用netrc作为用户名和密码,如下所示:

machine scrapyd.example.com
    username scrapy
    password secret

如果要列出所有可用目标,可以使用-l选项:

scrapyd-deploy -l

要列出特定目标上可用的项目,请使用-L选项:

scrapyd-deploy -L example

部署项目

首先cd进入项目的根目录,然后可以使用以下命令部署项目:

scrapyd-deploy <target> -p <project>

这将鼓励你的项目,并上传到目标。如果您的项目中有一个setup.py文件,则将使用该文件,否则将自动创建一个文件。

如果成功,您将看到类似于以下内容的json响应:

Deploying myproject-1287453519 to http://localhost:6800/addversion.json
Server response (200):
{"status": "ok", "spiders": ["spider1", "spider2"]}

为了避免指定目标和项目,您可以在scrapy.cfg文件中设置默认值:

[deploy]
url = http://scrapyd.example.com/api/scrapyd
username = scrapy
password = secret
project = yourproject

您现在可以使用以下命令部署项目:

scrapyd-deploy

如果要部署多个目标,可以使用一个命令在所有目标中部署项目:

scrapyd-deploy -a -p <project>

版本控制

默认情况下,scrapyd-deploy使用当前时间戳生成项目版本,如上图所示。但是,您可以使用--version

传递自定义版本
scrapyd-deploy <target> -p <project> --version <version>

或针对所有目标:

scrapyd-deploy -a -p <project> --version <version>

版本必须与LooseVersion相当。除非指定,否则scrapyd将使用最高级的版本。

如果使用mercurial或git,则可以分别使用HGGIT作为提供给--version的参数,以使用当前修订版作为版本。通过将version参数添加到目标的scrapy.cfg

[deploy:target]
...
version = HG

本地设置

您可能希望将某些设置保留在本地,而不是将它们部署到scrapyd。要完成此操作,您可以在项目的根目录(即您的scrapy.cfg文件所在的位置)创建一个local_settings.py文件,并将以下内容添加到项目的设置中:

try:
    from local_settings import *
except ImportError:
    pass

scrapyd-deploy不会在项目模块之外部署任何内容,因此local_settings.py文件不会被部署。

鸡蛋注意事项

为您的垃圾项目制作鸡蛋时,请记住以下几点:

  • 确保在构建鸡蛋时没有包含本地开发设置。find_packages函数可能正在获取您的自定义设置。在大多数情况下,您希望使用默认项目设置上载egg。
  • 您应该避免在项目代码中使用__file__,因为它不能很好地处理鸡蛋。考虑改用pkgutil.get_data()
  • 在项目中写入磁盘时要小心,因为scrapyd很可能是在不同的用户下运行的,该用户可能没有对某些目录的写访问权限。如果可以,请避免写入磁盘,并始终对临时文件使用tempfile

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Frida Java windows的逆向工程   Java术语中的对象初始化   java在何处放置maven参数化junit输入xml文件   java如何在Swift中创建以日期为键、布尔值为值的字典/地图?   java Velocity动态属性访问   java Maven站点我如何找到它们?   java JavaFX按钮在显示阶段时显示为选中状态   文件io字符串方法java赋值   java为SOAP头生成证书   java Android更改EditText的setError弹出消息的背景色   java格式存储为字符串的数字   java Testcontainers+dbrider:无法清除表X,消息:启用自动提交时无法提交。,原因:无效   java程序应该可以运行,但仍然没有输出?   Java在列表末尾添加一个节点?   java类对象中的默认构造函数做什么?   java如何更快地从映射返回键和值?