实现自己的 scrapyd 服务

Implementing own scrapyd service

我想为 scrapyd API 创建我自己的服务,这应该 return 关于 运行 爬虫的更多信息。我一开始就卡住了:我应该把包含该服务的模块放在哪里。如果我们查看默认值 "scrapyd.conf",它有一个名为服务的部分:

[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

所以这是 scrapyd 包中每个服务的绝对路径,它位于 dist-packages 文件夹中。有什么办法可以放置我自己的模块,包含不在 dist-packages 文件夹中的服务?

更新。 意识到这个问题可能不清楚。 Scrapy 是一个用于解析网站数据的框架。我有一个简单的 Django 网站,我可以从那里 start/stop 特定区域的爬虫等 (http://54.186.79.236 it's in russian). Manipulating with crawlers occurs through scrapyd API. In default it has a little API's only for start/stop/list crawlers and their logs etc. This APIs are listed in this doc's http://scrapyd.readthedocs.org/en/latest/api.html 所以上面是对现在问题的一些介绍。我想扩展现有的 API 以从 运行 爬虫中检索更多信息并将其呈现在我上面提到的网站中。为此,我需要继承现有的 scrapyd.webservice.WsResource 并编写一个服务。如果我将该服务模块放在 'sys.path' 路径之一中,那部分就可以了。但我想将这个包含模块的服务保留在 scrapy 项目文件夹中(出于某些美学原因)。因此,如果我把它放在那里,它会在 scrapyd 启动时争论(可以预见)'No module named'。

于是,我按照this解决了我的问题。