crawlo 1.2.9__py3-none-any.whl → 1.3.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of crawlo might be problematic. Click here for more details.
- crawlo/__version__.py +1 -1
- crawlo/commands/run.py +26 -35
- crawlo/commands/utils.py +12 -2
- crawlo/core/engine.py +1 -2
- crawlo/crawler.py +135 -69
- crawlo/extension/logging_extension.py +4 -2
- crawlo/middleware/middleware_manager.py +1 -1
- crawlo/middleware/offsite.py +2 -1
- crawlo/mode_manager.py +37 -100
- crawlo/pipelines/mysql_pipeline.py +5 -4
- crawlo/pipelines/pipeline_manager.py +15 -2
- crawlo/project.py +44 -37
- crawlo/settings/default_settings.py +13 -4
- crawlo/settings/setting_manager.py +55 -20
- crawlo/utils/log.py +21 -62
- {crawlo-1.2.9.dist-info → crawlo-1.3.1.dist-info}/METADATA +13 -4
- {crawlo-1.2.9.dist-info → crawlo-1.3.1.dist-info}/RECORD +20 -20
- {crawlo-1.2.9.dist-info → crawlo-1.3.1.dist-info}/WHEEL +0 -0
- {crawlo-1.2.9.dist-info → crawlo-1.3.1.dist-info}/entry_points.txt +0 -0
- {crawlo-1.2.9.dist-info → crawlo-1.3.1.dist-info}/top_level.txt +0 -0
crawlo/utils/log.py
CHANGED
|
@@ -8,28 +8,20 @@ from logging import (
|
|
|
8
8
|
INFO,
|
|
9
9
|
getLevelName,
|
|
10
10
|
)
|
|
11
|
-
# 导入日志轮转处理器
|
|
12
|
-
from logging.handlers import RotatingFileHandler, TimedRotatingFileHandler
|
|
13
11
|
|
|
14
12
|
LOG_FORMAT = '%(asctime)s - [%(name)s] - %(levelname)s: %(message)s'
|
|
15
13
|
|
|
16
14
|
|
|
17
15
|
class LoggerManager:
|
|
16
|
+
"""日志管理器,提供统一的日志配置和获取接口"""
|
|
18
17
|
logger_cache = {}
|
|
19
18
|
_default_filename = None
|
|
20
19
|
_default_level = DEBUG # 设置为最低级别,由handler控制实际输出
|
|
21
|
-
_default_file_level = INFO
|
|
22
|
-
_default_console_level =
|
|
20
|
+
_default_file_level = DEBUG # 默认为DEBUG级别,确保所有INFO级别日志都能写入文件
|
|
21
|
+
_default_console_level = DEBUG # 默认为DEBUG级别
|
|
23
22
|
_default_log_format = LOG_FORMAT
|
|
24
23
|
_default_encoding = 'utf-8'
|
|
25
|
-
#
|
|
26
|
-
_default_log_max_bytes = 10 * 1024 * 1024 # 10MB
|
|
27
|
-
_default_log_backup_count = 5
|
|
28
|
-
_default_log_when = 'midnight'
|
|
29
|
-
_default_log_interval = 1
|
|
30
|
-
_default_log_use_rotation = False
|
|
31
|
-
_default_log_rotation_type = 'size' # 'size' or 'time'
|
|
32
|
-
_default_log_rotation_suffix = None # 轮转文件后缀格式
|
|
24
|
+
_configured = False # 标记是否已配置
|
|
33
25
|
|
|
34
26
|
@classmethod
|
|
35
27
|
def _to_level(cls, level):
|
|
@@ -67,41 +59,26 @@ class LoggerManager:
|
|
|
67
59
|
get_val = settings.get if hasattr(settings, 'get') else (lambda k, d=None: kwargs.get(k, d))
|
|
68
60
|
|
|
69
61
|
filename = get_val('LOG_FILE')
|
|
70
|
-
level = get_val('LOG_LEVEL', '
|
|
71
|
-
file_level = get_val('LOG_FILE_LEVEL',
|
|
72
|
-
|
|
62
|
+
level = get_val('LOG_LEVEL', 'INFO') # 默认为INFO级别
|
|
63
|
+
file_level = get_val('LOG_FILE_LEVEL', level) # 默认继承LOG_LEVEL的值
|
|
64
|
+
# 根据项目规范,已完全移除LOG_CONSOLE_LEVEL支持,统一使用LOG_LEVEL控制控制台和文件的日志输出级别
|
|
73
65
|
log_format = get_val('LOG_FORMAT', LOG_FORMAT)
|
|
74
66
|
encoding = get_val('LOG_ENCODING', 'utf-8')
|
|
75
|
-
# 获取日志轮转配置
|
|
76
|
-
use_rotation = get_val('LOG_USE_ROTATION', False)
|
|
77
|
-
rotation_type = get_val('LOG_ROTATION_TYPE', 'size')
|
|
78
|
-
max_bytes = get_val('LOG_MAX_BYTES', cls._default_log_max_bytes)
|
|
79
|
-
backup_count = get_val('LOG_BACKUP_COUNT', cls._default_log_backup_count)
|
|
80
|
-
when = get_val('LOG_WHEN', cls._default_log_when)
|
|
81
|
-
interval = get_val('LOG_INTERVAL', cls._default_log_interval)
|
|
82
|
-
rotation_suffix = get_val('LOG_ROTATION_SUFFIX', cls._default_log_rotation_suffix) # 轮转文件后缀
|
|
83
67
|
|
|
84
68
|
cls._default_filename = filename
|
|
85
69
|
cls._default_level = cls._to_level(level)
|
|
86
70
|
cls._default_file_level = cls._to_level(file_level)
|
|
87
|
-
|
|
71
|
+
# 控制台日志级别直接使用LOG_LEVEL的值,不再支持LOG_CONSOLE_LEVEL
|
|
72
|
+
cls._default_console_level = cls._default_level
|
|
88
73
|
cls._default_log_format = log_format
|
|
89
74
|
cls._default_encoding = encoding
|
|
90
|
-
|
|
91
|
-
cls.
|
|
92
|
-
cls._default_log_rotation_type = rotation_type
|
|
93
|
-
cls._default_log_max_bytes = max_bytes
|
|
94
|
-
cls._default_log_backup_count = backup_count
|
|
95
|
-
cls._default_log_when = when
|
|
96
|
-
cls._default_log_interval = interval
|
|
97
|
-
cls._default_log_rotation_suffix = rotation_suffix
|
|
98
|
-
|
|
99
|
-
# 移除对根日志记录器级别的修改,避免副作用
|
|
75
|
+
|
|
76
|
+
cls._configured = True
|
|
100
77
|
|
|
101
78
|
@classmethod
|
|
102
79
|
def get_logger(cls, name='default', level=None, filename=None):
|
|
103
80
|
"""
|
|
104
|
-
|
|
81
|
+
获取logger实例
|
|
105
82
|
"""
|
|
106
83
|
# 确定最终参数
|
|
107
84
|
# 如果传入了level参数,则使用它,否则使用默认级别
|
|
@@ -110,7 +87,7 @@ class LoggerManager:
|
|
|
110
87
|
else:
|
|
111
88
|
# Logger级别设置为DEBUG(最低级别),由handler控制实际输出
|
|
112
89
|
final_level = DEBUG
|
|
113
|
-
|
|
90
|
+
|
|
114
91
|
final_filename = filename if filename is not None else cls._default_filename
|
|
115
92
|
|
|
116
93
|
# 安全的字符串化 key,避免任何 unhashable 类型
|
|
@@ -146,32 +123,9 @@ class LoggerManager:
|
|
|
146
123
|
if log_dir and not os.path.exists(log_dir):
|
|
147
124
|
os.makedirs(log_dir, exist_ok=True)
|
|
148
125
|
|
|
149
|
-
#
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
# 使用大小轮转
|
|
153
|
-
fh = RotatingFileHandler(
|
|
154
|
-
final_filename,
|
|
155
|
-
maxBytes=cls._default_log_max_bytes,
|
|
156
|
-
backupCount=cls._default_log_backup_count,
|
|
157
|
-
encoding=cls._default_encoding
|
|
158
|
-
)
|
|
159
|
-
else:
|
|
160
|
-
# 使用时间轮转
|
|
161
|
-
fh = TimedRotatingFileHandler(
|
|
162
|
-
final_filename,
|
|
163
|
-
when=cls._default_log_when,
|
|
164
|
-
interval=cls._default_log_interval,
|
|
165
|
-
backupCount=cls._default_log_backup_count,
|
|
166
|
-
encoding=cls._default_encoding
|
|
167
|
-
)
|
|
168
|
-
# 如果提供了自定义后缀格式,则设置
|
|
169
|
-
if cls._default_log_rotation_suffix:
|
|
170
|
-
fh.suffix = cls._default_log_rotation_suffix
|
|
171
|
-
else:
|
|
172
|
-
# 使用普通文件处理器(默认行为,会追加到文件)
|
|
173
|
-
fh = FileHandler(final_filename, mode='a', encoding=cls._default_encoding)
|
|
174
|
-
|
|
126
|
+
# 使用普通文件处理器(移除日志轮转功能)
|
|
127
|
+
fh = FileHandler(final_filename, mode='a', encoding=cls._default_encoding)
|
|
128
|
+
|
|
175
129
|
fh.setFormatter(formatter)
|
|
176
130
|
fh.setLevel(cls._default_file_level)
|
|
177
131
|
_logger.addHandler(fh)
|
|
@@ -183,6 +137,11 @@ class LoggerManager:
|
|
|
183
137
|
cls.logger_cache[key] = _logger
|
|
184
138
|
return _logger
|
|
185
139
|
|
|
140
|
+
@classmethod
|
|
141
|
+
def is_configured(cls):
|
|
142
|
+
"""检查日志系统是否已配置"""
|
|
143
|
+
return cls._configured
|
|
144
|
+
|
|
186
145
|
|
|
187
146
|
# 全局快捷函数
|
|
188
147
|
get_logger = LoggerManager.get_logger
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: crawlo
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.3.1
|
|
4
4
|
Summary: Crawlo 是一款基于异步IO的高性能Python爬虫框架,支持分布式抓取。
|
|
5
5
|
Home-page: https://github.com/crawl-coder/Crawlo.git
|
|
6
6
|
Author: crawl-coder
|
|
@@ -56,7 +56,7 @@ Requires-Dist: selenium>=3.141.0; extra == "all"
|
|
|
56
56
|
|
|
57
57
|
<p align="center">
|
|
58
58
|
<a href="https://www.python.org/downloads/">
|
|
59
|
-
<img src="https://img.shields.io/badge/python
|
|
59
|
+
<img src="https://img.shields.io/badge/python-%3C%3D3.12-blue" alt="Python Version">
|
|
60
60
|
</a>
|
|
61
61
|
<a href="LICENSE">
|
|
62
62
|
<img src="https://img.shields.io/badge/license-MIT-green" alt="License">
|
|
@@ -429,13 +429,22 @@ Crawlo框架的中间件、管道和扩展组件采用模块化设计,框架
|
|
|
429
429
|
|
|
430
430
|
用户可以通过`CUSTOM_MIDDLEWARES`配置自定义中间件:
|
|
431
431
|
|
|
432
|
-
|
|
432
|
+
``python
|
|
433
433
|
# settings.py
|
|
434
434
|
CUSTOM_MIDDLEWARES = [
|
|
435
435
|
'myproject.middlewares.CustomMiddleware',
|
|
436
436
|
]
|
|
437
437
|
```
|
|
438
438
|
|
|
439
|
+
> **注意**:DefaultHeaderMiddleware 和 OffsiteMiddleware 需要相应的配置才能启用:
|
|
440
|
+
> - DefaultHeaderMiddleware 需要配置 `DEFAULT_REQUEST_HEADERS` 或 `USER_AGENT` 参数
|
|
441
|
+
> - OffsiteMiddleware 需要配置 `ALLOWED_DOMAINS` 参数
|
|
442
|
+
>
|
|
443
|
+
> 如果未配置相应参数,这些中间件会因为 NotConfiguredError 而被禁用。
|
|
444
|
+
|
|
445
|
+
> **注意**:中间件的顺序很重要。SimpleProxyMiddleware 通常放在列表末尾,
|
|
446
|
+
> 这样可以在所有默认中间件处理后再应用代理设置。
|
|
447
|
+
|
|
439
448
|
#### 管道配置
|
|
440
449
|
|
|
441
450
|
框架默认加载以下管道:
|
|
@@ -930,7 +939,7 @@ Crawlo框架内置了多种中间件,其中代理中间件有两种实现:
|
|
|
930
939
|
|
|
931
940
|
如果需要使用简化版代理中间件,可以在配置文件中替换默认的代理中间件:
|
|
932
941
|
|
|
933
|
-
|
|
942
|
+
``python
|
|
934
943
|
# settings.py
|
|
935
944
|
MIDDLEWARES = [
|
|
936
945
|
# 注释掉复杂版代理中间件
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
crawlo/__init__.py,sha256=qZzTmb7hw5h_qcP2EYGUZcoSScxlKZFJ76CjSeS7UfA,1381
|
|
2
|
-
crawlo/__version__.py,sha256=
|
|
2
|
+
crawlo/__version__.py,sha256=P2DFKJQEJRlJhF0IW0Lwt4G4uMYyJJ5ymhv-XrCcPGo,22
|
|
3
3
|
crawlo/cli.py,sha256=OXprmcTUbFK02ptw_Gq8Gk4-ZCU-WEMJgzU1ztgP6Bk,2327
|
|
4
4
|
crawlo/config.py,sha256=dNoNyTkXLe2msQ7bZx3YTQItk1m49nIg5-g89FQDNwE,9486
|
|
5
5
|
crawlo/config_validator.py,sha256=gsiLqf5swWd9ISDvoLqCdG7iSXr-ZdBPD4iT6ug1ua4,11239
|
|
6
|
-
crawlo/crawler.py,sha256=
|
|
6
|
+
crawlo/crawler.py,sha256=Fiu9O_eFHKCfzgzFe0O9gpzWGyneY-imI8-9O4hiWqU,42608
|
|
7
7
|
crawlo/event.py,sha256=7-y6HNv_EIJSYQNzsj0mVK-Gg4ON3wdQeMdQjfFJPlw,313
|
|
8
8
|
crawlo/exceptions.py,sha256=sMay0wnWLfc_FXWslqxm60qz6b66LXs3EdN_w8ygE9k,1166
|
|
9
|
-
crawlo/mode_manager.py,sha256=
|
|
10
|
-
crawlo/project.py,sha256=
|
|
9
|
+
crawlo/mode_manager.py,sha256=IN3CsWW1pzKnzHxvULxJTTx3Vw2kxJilfeLuDWfxm4Q,4890
|
|
10
|
+
crawlo/project.py,sha256=swSTcan4Ky7sYfCatpNLKsVxztmPkIVwjdo3u6dgcpI,11128
|
|
11
11
|
crawlo/stats_collector.py,sha256=NkO09CB-220qz5rxFcD_dedGfr2VPFrDo4hya0Zh8Qc,1577
|
|
12
12
|
crawlo/subscriber.py,sha256=D3hzE7Pc_zJjc-zR7lct5pt32bz6LsDYeC8uHlS4Hso,4986
|
|
13
13
|
crawlo/task_manager.py,sha256=19InAxS9oJ9EMj20Aw2urN-v6BeC22dkgPuW-B9-4UI,819
|
|
@@ -16,12 +16,12 @@ crawlo/commands/check.py,sha256=7pD43s97DD-fSLO9OEOuNcNr7o-2g94rJULL8fUzdaI,2260
|
|
|
16
16
|
crawlo/commands/genspider.py,sha256=HhtvBLkIuhYtJUzom6PquItiC22vU9LNpOkjDUiqdM4,4937
|
|
17
17
|
crawlo/commands/help.py,sha256=gwfHibRpdYDmZO6waUMOEn8SMJ_ubdjL-prD5fiuVY8,4973
|
|
18
18
|
crawlo/commands/list.py,sha256=BqlPjBa5FLotjAlyZ3-nGmXg5cWcCNbHi8U5znb2_D8,5722
|
|
19
|
-
crawlo/commands/run.py,sha256=
|
|
19
|
+
crawlo/commands/run.py,sha256=KcJ4h4D7lavB6qQDpYMrbgJMgY5vCSLHaLckos5EUNY,11793
|
|
20
20
|
crawlo/commands/startproject.py,sha256=aqKRJarKqTf5XjJnGXwjRpp0uYF16LreFbwwQLGpK-0,16070
|
|
21
21
|
crawlo/commands/stats.py,sha256=8wTubR1RQ1JPTlpOKArcGcQ39bM-0cuH27lDpndnwPQ,6014
|
|
22
|
-
crawlo/commands/utils.py,sha256=
|
|
22
|
+
crawlo/commands/utils.py,sha256=Psfu2tKrmDloMq0WnfXLaxx0lJFitMZ-FWS3HAIrziQ,5382
|
|
23
23
|
crawlo/core/__init__.py,sha256=PnFyJdVNHBoPmV1sW0AHQXijeoSTQ8cMYrbNM1JK8kA,41
|
|
24
|
-
crawlo/core/engine.py,sha256=
|
|
24
|
+
crawlo/core/engine.py,sha256=Hy0K_g9My6aQ3CPkxAcCiPsumdwh4O8qRhmFlNoErd4,14496
|
|
25
25
|
crawlo/core/processor.py,sha256=qmCqAeqhwYu-UE86evYesaGt9qpuSIfH-ZIZKcXFCZc,1140
|
|
26
26
|
crawlo/core/scheduler.py,sha256=D-YzXVvnP6DEkovmz9hThhzIe2UgRrQLNt9pJCPEPwY,12593
|
|
27
27
|
crawlo/data/__init__.py,sha256=8MgDxcMhx-emFARcLAw_ODOZNz0neYBcx7kEbzothd8,116
|
|
@@ -37,7 +37,7 @@ crawlo/extension/__init__.py,sha256=FbOwJ4jh60xCbSh7P9CUGJsGAC-VH4MyOtCftRMlxbk,
|
|
|
37
37
|
crawlo/extension/health_check.py,sha256=0GveZgUtFwjYEKlm3qbwIvCmb4FR0qrIKc8cEF1yQV8,5516
|
|
38
38
|
crawlo/extension/log_interval.py,sha256=VCIeNqXcWDnxj4m6l77cjqgRzV8LfsPMb22X0Xc1Vwc,2417
|
|
39
39
|
crawlo/extension/log_stats.py,sha256=vrChs3bj_Dvay3kxxkBOp4-w0K-IG-2XZ0PoSUahTPs,2908
|
|
40
|
-
crawlo/extension/logging_extension.py,sha256=
|
|
40
|
+
crawlo/extension/logging_extension.py,sha256=RfL1wI4nz-1Xtg420Ktp7RXnOPnZSHwO0Zpg1w4fO4M,1726
|
|
41
41
|
crawlo/extension/memory_monitor.py,sha256=4aszl3C0GMQbqFhGZjZq5iQuXQR1sOz06VHjjEHgkyE,4290
|
|
42
42
|
crawlo/extension/performance_profiler.py,sha256=EPiNuXuPPDU0Jtgy8arYHpr_8ASK13cCI2BytdJnu_I,4899
|
|
43
43
|
crawlo/extension/request_recorder.py,sha256=RC23yzXClnVv9j2ljQvjBkUfWznfnDHsrQejKhE9y5E,4074
|
|
@@ -51,8 +51,8 @@ crawlo/items/items.py,sha256=e-3nXI9ckD64vcDxxQiAU6ufbtJMs09gbZQcYjxgwHY,3374
|
|
|
51
51
|
crawlo/middleware/__init__.py,sha256=ldaGFNbiJnK9Fx12Vdf9fDNfzXxoETtShp5r-vodtw0,549
|
|
52
52
|
crawlo/middleware/default_header.py,sha256=wQ7BrUHd-hRosFoKsReV9hwNNr_jwK6V0ZfxL6MOGrk,5032
|
|
53
53
|
crawlo/middleware/download_delay.py,sha256=zt9R5g2HWErWA_MAOnGcw_D8l6HD769Kyaw-Hv-vcTc,3438
|
|
54
|
-
crawlo/middleware/middleware_manager.py,sha256=
|
|
55
|
-
crawlo/middleware/offsite.py,sha256=
|
|
54
|
+
crawlo/middleware/middleware_manager.py,sha256=9Sj9rrWK6R9NZq9eT38sWRGuBKLKfjSgEAxu-5NCWgU,6278
|
|
55
|
+
crawlo/middleware/offsite.py,sha256=cR0nVAygxAGbkmyI8yqiRtrZWTRLWddUiToMYGmhrfs,4084
|
|
56
56
|
crawlo/middleware/proxy.py,sha256=NquB6tqHAgHs3-2_1_5220kJYfjNG5JyHRJyo_2j4wo,15636
|
|
57
57
|
crawlo/middleware/request_ignore.py,sha256=xcyZ1c7r_HhbzR3r9pfjsLGW7L7FBVeYvlNt8cpP2wY,2577
|
|
58
58
|
crawlo/middleware/response_code.py,sha256=-Aa9Mm9nJN-WdddN7iTanJRMA83_LYYgSEz3XLQGvMo,4934
|
|
@@ -70,16 +70,16 @@ crawlo/pipelines/database_dedup_pipeline.py,sha256=Ao_5jvVPl5QikxXhPeIrcB7_3tinR
|
|
|
70
70
|
crawlo/pipelines/json_pipeline.py,sha256=vlu1nqbD2mtqtExt9cL5nibx1CwJM1RNqd4WGjZRHAY,8367
|
|
71
71
|
crawlo/pipelines/memory_dedup_pipeline.py,sha256=oIksbIrmSw9s9jMh6JJMfVbv6hzseVMV_g9S8UHQUP4,3837
|
|
72
72
|
crawlo/pipelines/mongo_pipeline.py,sha256=k7gNqAO-g2MtIfArphC6z5ZzkKVRkBKcv-2ImziPFA0,5706
|
|
73
|
-
crawlo/pipelines/mysql_pipeline.py,sha256=
|
|
74
|
-
crawlo/pipelines/pipeline_manager.py,sha256=
|
|
73
|
+
crawlo/pipelines/mysql_pipeline.py,sha256=CKll3rNFXc0-BGQ_0A6QOSm2-ymHtdjdybX6bSB8i2g,13500
|
|
74
|
+
crawlo/pipelines/pipeline_manager.py,sha256=R4zXYaMUseZsv5d7vbsNPFuXGjO_KWyDve0bHpqsL7Y,3079
|
|
75
75
|
crawlo/pipelines/redis_dedup_pipeline.py,sha256=POYRiWAOp1pqDW9iTPJ8h3VcpLALeLrpw74MvJJqPiM,6342
|
|
76
76
|
crawlo/queue/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
77
77
|
crawlo/queue/pqueue.py,sha256=yzF900ko2RReVNZtfk_VV3PzSXEUALI6SHf97geuu6s,1058
|
|
78
78
|
crawlo/queue/queue_manager.py,sha256=XqS_oVbNQJWdtokOuDDPK-FzMrVdnZ3UKp1MF_DMJww,14941
|
|
79
79
|
crawlo/queue/redis_priority_queue.py,sha256=k1OChSMRovSMkbbJ9388axfhpYeMevuJTe-3N1oYhbA,13126
|
|
80
80
|
crawlo/settings/__init__.py,sha256=xsukVKn_h2Hopm1Nj-bXkhbfyS62QTTvJi7fhZUwR9M,123
|
|
81
|
-
crawlo/settings/default_settings.py,sha256=
|
|
82
|
-
crawlo/settings/setting_manager.py,sha256=
|
|
81
|
+
crawlo/settings/default_settings.py,sha256=VKaCb8JnHx_B-Zi3hN6Mt0QIdv0YRhFlhVEZ2fhx84o,9193
|
|
82
|
+
crawlo/settings/setting_manager.py,sha256=4uuMpGVYzxjmQjvlGqfZ8hDaoSh34OAoL0LCATsMCkI,7512
|
|
83
83
|
crawlo/spider/__init__.py,sha256=ZnSAL9PXLZSIH-Jdv-P6RuWmQUdukr8KPLQK6SXZZaU,20435
|
|
84
84
|
crawlo/templates/crawlo.cfg.tmpl,sha256=9BAmwEibS5Tvy6HIcGXPb0BGeuesmibebmTW0iAEkmo,230
|
|
85
85
|
crawlo/templates/run.py.tmpl,sha256=v_g-LQMYJ6pC8TZgyWj0yB2yTTKrwy9lEJufAYCXyxY,1228
|
|
@@ -117,7 +117,7 @@ crawlo/utils/error_handler.py,sha256=q6NqHxjYrKdswfmhshMYMmfBIr0M2YWPYxts4ScHl4Y
|
|
|
117
117
|
crawlo/utils/func_tools.py,sha256=WUZEGpWMuDDX7g-QySM7iaiC74erW2SSkZoUvDw1NjM,2369
|
|
118
118
|
crawlo/utils/large_scale_config.py,sha256=j7wQ5ty7pQlBRygw2vhRJ7OI19RYBZKPfYMP3WeF2WI,8154
|
|
119
119
|
crawlo/utils/large_scale_helper.py,sha256=Kxdy3WMuqjzQTyCc6z4xEYxXDi4xnYKJzsVwaBYZrrg,12108
|
|
120
|
-
crawlo/utils/log.py,sha256=
|
|
120
|
+
crawlo/utils/log.py,sha256=vAMACdX8N3kTIRegmKDE1oVImESufeGEskoRmNQQkJo,5281
|
|
121
121
|
crawlo/utils/performance_monitor.py,sha256=Q9xxuXBIfFoig_U-FQPOUuPAh1axO3MzYgpielDyku0,9547
|
|
122
122
|
crawlo/utils/queue_helper.py,sha256=xpUUTOqlU1xz2Pb9NKAVGo3AfAO-7Xvx8Lm1q65Dgck,4743
|
|
123
123
|
crawlo/utils/redis_connection_pool.py,sha256=amGjhaKpodMrw9X56qxZ6f3OTZhjrI89sSVGqgwAQGU,11050
|
|
@@ -212,8 +212,8 @@ tests/test_tools.py,sha256=9t9FXZ61MfdB70nck9NYzCq97yd3SLVlLiMybEAlClk,5345
|
|
|
212
212
|
tests/test_user_agents.py,sha256=rUotyuE2iJDi2LQBrUh980U-dAMTs4ARPMJxICOoQFY,3231
|
|
213
213
|
tests/tools_example.py,sha256=MtIypR-OFiWwi-skurwmq4fM0cGTt-GUX4hSekYs7BY,7739
|
|
214
214
|
tests/verify_distributed.py,sha256=krnYYA5Qx9xXDMWc9YF5DxPSplGvawDg2n0l-3CAqoM,3928
|
|
215
|
-
crawlo-1.
|
|
216
|
-
crawlo-1.
|
|
217
|
-
crawlo-1.
|
|
218
|
-
crawlo-1.
|
|
219
|
-
crawlo-1.
|
|
215
|
+
crawlo-1.3.1.dist-info/METADATA,sha256=6m0OV78Iso8DwQFiIB0_mWkYSDymuhjw69F9aVKwtCo,26813
|
|
216
|
+
crawlo-1.3.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
217
|
+
crawlo-1.3.1.dist-info/entry_points.txt,sha256=5HoVoTSPxI8SCa5B7pQYxLSrkOdiunyO9tqNsLMv52g,43
|
|
218
|
+
crawlo-1.3.1.dist-info/top_level.txt,sha256=keG_67pbZ_wZL2dmDRA9RMaNHTaV_x_oxZ9DKNgwvR0,22
|
|
219
|
+
crawlo-1.3.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|