斯皮里德的客户

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第三方库


热门话题
java如何为ConcurrentHashMap使用并设置适当的并发级别?   java泛型方法,运行时错误,   java在页面上显示加载的图像   java Paypal定期直接支付问题   java如何延迟重新绘制组件   JavaSpringBoot+Hibernate如何维护@Transient字段   java在其方法中获取关于类的信息   在java中将别名添加到枚举   java如何解决向google报告成绩时“需要重新连接客户端”的问题   清晰的java图像背景   java未找到适合JDateChooser的构造函数(字符串、字符串、字符)   java LRU缓存实现。某些测试用例的代码失败   if语句Java嵌套的if/Else条件   java JSoup“wrap”并非每次都按预期工作   Java Spring引导循环依赖于一个环境   ssl证书无法通过Java和IntelliJ连接到SOAP服务   带整数验证的Java扫描器   java在Flex中呈现具有动态列的datagrid   java Android:通过用户选择的选项将文件上载到服务器   子类中的java抛出错误、异常和运行时异常