Settings¶
Frontera settings 允许你定制所有的组件,包括
FrontierManager
,
Middleware
and
Backend
themselves.
settings 提供了键值映射的全局命名空间可以用来获取配置值。可以通过不同的机制填充设置,如下所述。
内置的配置请查看: Built-in settings reference。
设计 settings¶
当你使用 Frontera 的时候,你需要告诉它你在用什么配置。因为 FrontierManager
是 Frontier 使用的入口,你可以使用 Loading from settings 来进行配置。
当使用一个字符串路径指向配置文件的时候,我们建议下面这种文件结构:
my_project/
frontier/
__init__.py
settings.py
middlewares.py
backends.py
...
这些都是基本的:
frontier/settings.py
: frontier settings 文件。frontier/middlewares.py
: frontier 使用的中间件。frontier/backends.py
: frontier 使用的后端。
如何访问 settings¶
Settings
可以通过
FrontierManager.settings
属性访问, 它传给了
Middleware.from_manager
和
Backend.from_manager
类方法:
class MyMiddleware(Component):
@classmethod
def from_manager(cls, manager):
manager = crawler.settings
if settings.TEST_MODE:
print "test mode is enabled!"
换句话说, settings 可以通过 Settings
访问.
内置 frontier settings¶
下面是所以可用的 Frontera settings,以字母顺序排序,以及它们的默认值和适用范围。
CANONICAL_SOLVER¶
默认: frontera.contrib.canonicalsolvers.Basic
CanonicalSolver
被用来解析规划网址。详情参考 Canonical URL Solver.
SPIDER_LOG_CONSUMER_BATCH_SIZE¶
默认: 512
这是 strategy worker 和 db worker 消费 spider log 流时的批量大小。增加它将使 worker 在每个任务上花更多的时间,但是每个任务处理更多的 item,因此在一段时间内给其它任务留下了更少的时间。减少它将导致在同一时间段内运行多个任务,但总体效率较低。 当你的消费者太快或者太慢的时候使用这个选项。
SCORING_LOG_CONSUMER_BATCH_SIZE¶
默认: 512
这是 db worker 消费 scoring log 流时的批量大小。当你需要调整 scoring log 消费速度的时候使用这个选项。
DELAY_ON_EMPTY¶
默认: 5.0
当队列大小小于 CONCURRENT_REQUESTS
时,向调度器发送请求时的延迟时间。当后端没有请求的时候,这个延迟帮助消耗掉剩余的缓存而无需每次请求都去请求后端。如果对后端的调用花费的时间过长,则增加它,如果你需要更快从种子启动爬虫,则减少它。
LOGGING_CONFIG¶
默认: logging.conf
logging 模块的路径。参考 https://docs.python.org/2/library/logging.config.html#logging-config-fileformat 如果文件不存在,日志将使用 logging.basicConfig()
实例化,将在 CONSOLE 输出日志。这个选项只在 db worker 和 strategy worker 中使用。
The path to a file with logging module configuration.
MAX_NEXT_REQUESTS¶
默认: 64
get_next_requests
API 返回的最大请求数量。在分布式模式中,它应该是 db worker 为每个爬虫生成的请求数或者是每次从消息总线中获取的请求数。在单进程模式下,它应该是每次调用 get_next_requests
获取的请求数量。
MESSAGE_BUS_CODEC¶
默认: frontera.contrib.backends.remote.codecs.msgpack
指向 message bus 编码实现。参考 codec interface description。 默认是 MsgPack。
MIDDLEWARES¶
包含在 frontier 中启用的中间件的列表。详情参考 Activating a middleware
默认:
[
'frontera.contrib.middlewares.fingerprint.UrlFingerprintMiddleware',
]
OVERUSED_SLOT_FACTOR¶
默认: 5.0
(某个 slot 中进行中+队列中的请求)/ (每个slot允许的最大并发送)称作 overused。它只影响 Scrapy scheduler。
SPIDER_LOG_PARTITIONS¶
默认: 1
spider log 分区的数量。这个参数影响 strategy worker (s) 的数量,每个 strategy worker 被分配到自己的分区。
STORE_CONTENT¶
默认: False
Determines if content should be sent over the message bus and stored in the backend: a serious performance killer.
内置指纹中间件设置¶
设置被 UrlFingerprintMiddleware 和 DomainFingerprintMiddleware 使用。
TLDEXTRACT_DOMAIN_INFO¶
默认: False
如果设置为 True
,将使用 tldextract 附加额外的域信息(二级,顶级和子域名)到 meta 字段(参考 为对象添加其他值 )。
内置后端配置¶
SQLAlchemy¶
SQLALCHEMYBACKEND_CACHE_SIZE¶
默认: 10000
SQLAlchemy 元数据的 LRU 缓存大小。它用来缓存对象,这些对象从数据库获得,还缓存抓取的文档。它主要节约了数据库的吞吐量,如果你面临从数据库获得太多数据的问题增加它,如果你想节约内存就减少它。
SQLALCHEMYBACKEND_DROP_ALL_TABLES¶
默认: True
如果你想禁止每次后端初始化的时候删除数据库表则将之设为 False
(例如每次启动 Scrapy 爬虫的时候)。
SQLALCHEMYBACKEND_MODELS¶
默认:
{
'MetadataModel': 'frontera.contrib.backends.sqlalchemy.models.MetadataModel',
'StateModel': 'frontera.contrib.backends.sqlalchemy.models.StateModel',
'QueueModel': 'frontera.contrib.backends.sqlalchemy.models.QueueModel'
}
用来设置后端使用的 SQLAlchemy 模型。主要用来定制化。
重新抓取后端¶
ZeroMQ 消息总线设置¶
消息总线类是 distributed_frontera.messagebus.zeromq.MessageBus
ZMQ_ADDRESS¶
默认: 127.0.0.1
定义 ZeroMQ 套接字应该绑定或连接的位置。可以是主机名或IP地址。现在,ZMQ 只有通过 IPv4进行了测试。IPv6在不久的将来会增加支持。
Kafka 消息总线配置¶
这个消息总线的类是 frontera.contrib.messagebus.kafkabus.MessageBus
KAFKA_LOCATION¶
kafka 代理的主机名和端口号,以 :分割。可以是主机名:端口的字符串对,用逗号(,)分隔。
SCORING_LOG_TOPIC¶
scoring log 数据流的 topic 名字。
Default settings¶
如果没有指定设置,frontier 将使用内置的默认设置。有关默认值的完整列表,请参见 Built-in settings reference 。所有默认设置都可以被覆盖。