斯皮里德的客户
scrapyd-client的Python项目详细描述
scrapyd客户端是scrapyd的客户端。它提供了scrapyd-deploy实用程序,允许您将项目部署到scrapyd服务器。
如何工作
将项目部署到scrapyd服务器通常需要两个步骤:
- Eggifying你的项目。您需要为此安装setuptools。请参见下面的Egg Caveats。
- 通过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,则可以分别使用HG或GIT作为提供给--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。