Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
looyolo
scrapy
提交
495152bd
S
scrapy
项目概览
looyolo
/
scrapy
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
scrapy
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
495152bd
编写于
5月 18, 2011
作者:
P
Pablo Hoffman
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
disabled verbose depth stats collection by default, added DEPTH_STATS_VERBOSE setting to enable it
上级
accb6ed8
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
21 addition
and
8 deletion
+21
-8
docs/topics/settings.rst
docs/topics/settings.rst
+11
-1
scrapy/contrib/spidermiddleware/depth.py
scrapy/contrib/spidermiddleware/depth.py
+9
-6
scrapy/tests/test_spidermiddleware_depth.py
scrapy/tests/test_spidermiddleware_depth.py
+1
-1
未找到文件。
docs/topics/settings.rst
浏览文件 @
495152bd
...
...
@@ -323,7 +323,17 @@ DEPTH_STATS
Default: ``True``
Whether to collect depth stats.
Whether to collect maximum depth stats.
.. setting:: DEPTH_STATS_VERBOSE
DEPTH_STATS_VERBOSE
-------------------
Default: ``False``
Whether to collect verbose depth stats. If this is enabled, the number of
requests for each depth is collected in the stats.
.. setting:: DOWNLOADER_DEBUG
...
...
scrapy/contrib/spidermiddleware/depth.py
浏览文件 @
495152bd
...
...
@@ -9,9 +9,10 @@ from scrapy.http import Request
class
DepthMiddleware
(
object
):
def
__init__
(
self
,
maxdepth
,
stats
=
None
):
def
__init__
(
self
,
maxdepth
,
stats
=
None
,
verbose_stats
=
False
):
self
.
maxdepth
=
maxdepth
self
.
stats
=
stats
self
.
verbose_stats
=
verbose_stats
if
self
.
stats
and
self
.
maxdepth
:
stats
.
set_value
(
'envinfo/request_depth_limit'
,
maxdepth
)
...
...
@@ -19,11 +20,12 @@ class DepthMiddleware(object):
def
from_settings
(
cls
,
settings
):
maxdepth
=
settings
.
getint
(
'DEPTH_LIMIT'
)
usestats
=
settings
.
getbool
(
'DEPTH_STATS'
)
verbose
=
settings
.
getbool
(
'DEPTH_STATS_VERBOSE'
)
if
usestats
:
from
scrapy.stats
import
stats
else
:
stats
=
None
return
cls
(
maxdepth
,
stats
)
return
cls
(
maxdepth
,
stats
,
verbose
)
def
process_spider_output
(
self
,
response
,
result
,
spider
):
def
_filter
(
request
):
...
...
@@ -35,14 +37,15 @@ class DepthMiddleware(object):
level
=
log
.
DEBUG
,
spider
=
spider
)
return
False
elif
self
.
stats
:
self
.
stats
.
inc_value
(
'request_depth_count/%s'
%
depth
,
spider
=
spider
)
if
depth
>
self
.
stats
.
get_value
(
'request_depth_max'
,
0
,
spider
=
spider
):
self
.
stats
.
set
_value
(
'request_depth_max'
,
depth
,
spider
=
spider
)
if
self
.
verbose_stats
:
self
.
stats
.
inc_value
(
'request_depth_count/%s'
%
depth
,
spider
=
spider
)
self
.
stats
.
max
_value
(
'request_depth_max'
,
depth
,
spider
=
spider
)
return
True
# base case (depth=0)
if
self
.
stats
and
'depth'
not
in
response
.
request
.
meta
:
response
.
request
.
meta
[
'depth'
]
=
0
self
.
stats
.
inc_value
(
'request_depth_count/0'
,
spider
=
spider
)
if
self
.
verbose_stats
:
self
.
stats
.
inc_value
(
'request_depth_count/0'
,
spider
=
spider
)
return
(
r
for
r
in
result
or
()
if
_filter
(
r
))
scrapy/tests/test_spidermiddleware_depth.py
浏览文件 @
495152bd
...
...
@@ -14,7 +14,7 @@ class TestDepthMiddleware(TestCase):
self
.
stats
=
StatsCollector
()
self
.
stats
.
open_spider
(
self
.
spider
)
self
.
mw
=
DepthMiddleware
(
1
,
self
.
stats
)
self
.
mw
=
DepthMiddleware
(
1
,
self
.
stats
,
True
)
self
.
assertEquals
(
self
.
stats
.
get_value
(
'envinfo/request_depth_limit'
),
1
)
def
test_process_spider_output
(
self
):
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录