cobweb-launcher 0.0.5__py3-none-any.whl → 0.0.7__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
cobweb/__init__.py CHANGED
@@ -1,19 +1,8 @@
1
- # from .distributed.launcher import launcher
2
- # from .distributed import models
3
1
  from .bbb import Seed, Queue, DBItem
4
2
  from .task import Task
5
3
  from .log import log
6
4
  from .interface import SchedulerInterface, StorerInterface
7
5
  from .db.redis_db import RedisDB
8
- # from . import db
9
- # from .base.bbb import Seed
10
- # from .base import interface
11
- # from .base import config
12
- # from .base import utils
13
- # from .base import log as logger
14
- #
15
- # from .db.scheduler import *
16
- # from .db.storer import *
17
- # from .db.base import *
6
+ from .distributed.launcher import launcher
18
7
 
19
8
 
cobweb/bbb.py CHANGED
@@ -60,7 +60,7 @@ class Seed:
60
60
  self,
61
61
  seed_info=None,
62
62
  priority=300,
63
- version=None,
63
+ version=0,
64
64
  retry=0,
65
65
  **kwargs
66
66
  ):
cobweb/db/redis_db.py CHANGED
@@ -9,19 +9,9 @@ class RedisDB:
9
9
  self,
10
10
  project: str,
11
11
  task_name: str,
12
- host=None,
13
- port=None,
14
- username=None,
15
- password=None,
16
- db=0
12
+ config: dict
17
13
  ):
18
- pool = redis.ConnectionPool(
19
- host=host,
20
- port=port,
21
- username=username,
22
- password=password,
23
- db=db
24
- )
14
+ pool = redis.ConnectionPool(**config)
25
15
  self.heartbeat_key = f"{project}:{task_name}:heartbeat" # redis type string
26
16
  self.spider_key = f"{project}:{task_name}:seed_info:spider" # redis type zset, .format(priority)
27
17
  self.storer_key = f"{project}:{task_name}:seed_info:storer:%s" # redis type set,
@@ -5,8 +5,8 @@ from cobweb import log, StorerInterface
5
5
 
6
6
  class Loghub(StorerInterface):
7
7
 
8
- def __init__(self, table, length, queue, config):
9
- super().__init__(table, length, queue, config)
8
+ def __init__(self, **kwargs):
9
+ super().__init__(**kwargs)
10
10
  self.client = None
11
11
 
12
12
  def init_loghub_clint(self):
@@ -2,10 +2,11 @@ import time
2
2
  import threading
3
3
  from threading import Thread
4
4
  from importlib import import_module
5
- from models import Scheduler, Spider, Storer
6
- from cobweb.utils import struct_queue_name, restore_table_name
7
- from cobweb import log, Queue, DBItem, RedisDB, StorerInterface
8
5
 
6
+ from cobweb import log, Queue, DBItem, RedisDB, StorerInterface
7
+ from cobweb.utils import struct_queue_name, restore_table_name
8
+ from .models import Scheduler, Spider, Storer
9
+ from collections import namedtuple
9
10
 
10
11
  # def start_seeds(seeds):
11
12
  # if not seeds:
@@ -29,14 +30,14 @@ from cobweb import log, Queue, DBItem, RedisDB, StorerInterface
29
30
  # storer_data[db_name]["db_args_list"].append(info[1:])
30
31
  # return storer_data
31
32
 
32
- def get_storer_db(db):
33
+ def get_scheduler_db(db):
33
34
  if isinstance(db, str):
34
35
  if "." in db:
35
36
  model_path = db.split(".")
36
37
  model = import_module(db)
37
38
  obj = getattr(model, db)
38
39
  else:
39
- model = import_module(f"cobweb.db.storer.{db.lower()}")
40
+ model = import_module(f"cobweb.db.scheduler.{db.lower()}")
40
41
  obj = getattr(model, db.capitalize())
41
42
  return obj
42
43
  # if db.lower() in dir(StorerDB):
@@ -48,6 +49,25 @@ def get_storer_db(db):
48
49
  raise TypeError()
49
50
 
50
51
 
52
+ def get_storer_db(db):
53
+ if isinstance(db, str):
54
+ if "." in db:
55
+ model_path = db.split(".")
56
+ model = import_module(db)
57
+ obj = getattr(model, db)
58
+ else:
59
+ model = import_module(f"cobweb.db.storer.{db.lower()}")
60
+ obj = getattr(model, db.capitalize())
61
+ return obj, db.lower()
62
+ # if db.lower() in dir(StorerDB):
63
+ # return getattr(StorerDB, db)
64
+ # else:
65
+ # pass
66
+ elif issubclass(db, StorerInterface):
67
+ return db, db.__name__.lower()
68
+ raise TypeError()
69
+
70
+
51
71
  def check(stop, last, spider, scheduler, storer_list, ready_seed_length, spider_queue_length):
52
72
  time.sleep(5)
53
73
  while True:
@@ -101,18 +121,22 @@ def launcher(task):
101
121
  stop = threading.Event()
102
122
 
103
123
  # 初始化redis信息
104
- redis_db = RedisDB(task.project, task.task_name, *task.redis_info)
124
+ redis_db = RedisDB(task.project, task.task_name, task.redis_info)
105
125
 
106
126
  log.info("初始化cobweb!")
107
127
 
108
128
  seed_queue = Queue()
109
129
 
130
+ if task.scheduler_info is None:
131
+ task.scheduler_info = dict()
132
+
110
133
  # 调度器动态继承
111
134
  sql = task.scheduler_info.get("sql")
112
135
  table = task.scheduler_info.get("table")
113
136
  size = task.scheduler_info.get("size")
114
137
  scheduler_config = task.scheduler_info.get("config")
115
- DB = task.scheduler_info["db"]
138
+ scheduler_db = task.scheduler_info.get("db", "default")
139
+ DB = get_scheduler_db(scheduler_db)
116
140
  # SchedulerDB, table, sql, length, size, config = task.scheduler_info
117
141
  SchedulerTmp = type(DB.__name__, (Scheduler, DB), {})
118
142
 
@@ -134,12 +158,12 @@ def launcher(task):
134
158
  item = type("Item", (object,), {"redis_client": redis_db})()
135
159
 
136
160
  for storer_info in storer_info_list:
137
- db = storer_info["db"]
161
+ storer_db = storer_info["db"]
138
162
  fields = storer_info["fields"]
139
163
  storer_table = storer_info.get("table", "console")
140
164
  storer_config = storer_info.get("config")
141
165
 
142
- StorerDB, db_name = get_storer_db(db)
166
+ StorerDB, db_name = get_storer_db(storer_db)
143
167
  StorerTmp = type(StorerDB.__name__, (Storer, StorerDB), {})
144
168
 
145
169
  if not getattr(item, db_name, None):
@@ -154,9 +178,9 @@ def launcher(task):
154
178
  # 初始话存储器
155
179
  table_name = restore_table_name(table_name=storer_table)
156
180
  storer = StorerTmp(
157
- table=table_name, queue=queue,
181
+ table=table_name, fields=fields,
158
182
  length=task.storer_queue_length,
159
- config=storer_config
183
+ queue=queue, config=storer_config
160
184
  )
161
185
  storer_list.append(storer)
162
186
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cobweb-launcher
3
- Version: 0.0.5
3
+ Version: 0.0.7
4
4
  Summary: spider_hole
5
5
  Home-page: https://github.com/Juannie-PP/cobweb
6
6
  Author: Juannie-PP
@@ -1,28 +1,28 @@
1
- cobweb/__init__.py,sha256=tTpeU8vMuM_yDytUdNuqVpVSmkSMgRb2nCZ8bFAYLOw,503
2
- cobweb/bbb.py,sha256=8croagwF3xVdb1Xq3f5g22WydQ-pHHWWnA50895dH3E,5617
1
+ cobweb/__init__.py,sha256=IKQkcts73m_K-b6TGs_IxkdkncnZRU0O_N0MJct2COI,218
2
+ cobweb/bbb.py,sha256=DWqnCiBhzD4UzPxgDHo4mhvYIB5JnYFrAtpF_vcTtT0,5614
3
3
  cobweb/interface.py,sha256=um_k2AAQl1HTOvfUlq914DjkpfZVwt2m1B65EpPKrmE,802
4
4
  cobweb/log.py,sha256=Gb3_y4IzTo5pJohTggBCU9rK6-ZN3hgTOHkoXHyN6CU,2384
5
5
  cobweb/task.py,sha256=awZWFwON34WAJs08TKPaYTbyRjmoNOCBkLCNf2l9C-Q,1282
6
6
  cobweb/utils.py,sha256=tHSj_T1Ct7Y-QdIo5w4hCwkO59RlQiq9yGxUOjojMOg,2158
7
7
  cobweb/db/__init__.py,sha256=4m9lqmxZCRbaih3Z3rl_BT0GugMd0dkOIgu_P9aeC84,63
8
8
  cobweb/db/oss_db.py,sha256=l-Xbqawg1HJgedz9MumXQrr1jMK6_EePXCis11CZEkE,3810
9
- cobweb/db/redis_db.py,sha256=pezhpWM6KOFGlHX9zD3VAYMVV3mnOieSZI5Xcr7vK3I,7634
9
+ cobweb/db/redis_db.py,sha256=keVlFpUT7spfNwZ4g_5teROo_uOsjfDWtR-WvAcqZIE,7415
10
10
  cobweb/db/scheduler/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
11
  cobweb/db/scheduler/default.py,sha256=OxmFX7OvMEhKEq-NF7A8I9cA4V4qWw5vayS-yIbng0A,114
12
12
  cobweb/db/scheduler/textfile.py,sha256=atRDeNT-e5toNvyGsCXAxL1FJi77uSYktdCzH_hXGo8,821
13
13
  cobweb/db/storer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
14
  cobweb/db/storer/console.py,sha256=f7yZFo4qTieaB9JxbGfrVAclAb2H_wji82dWoZp7HUw,182
15
- cobweb/db/storer/loghub.py,sha256=SxKnI4B7cn-Uws91WyjFXessbBwA3o1-pWTcMllBDac,1771
15
+ cobweb/db/storer/loghub.py,sha256=4VqZacXWhidzINHXQu2_-E0HOBRCcc86f6LkKfnXD5I,1731
16
16
  cobweb/db/storer/redis.py,sha256=7Q2XEQwBL6X_M1uvxzzuSBt6iw9piKw-_FWKm2INZDQ,412
17
17
  cobweb/db/storer/textfile.py,sha256=3mDHMvF6Sh5fn3IHzWQxyTUd45V-zUoH8vY3EoRlMx0,415
18
18
  cobweb/distributed/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
19
- cobweb/distributed/launcher.py,sha256=UmDYpl3PWUzoyoWBL68AErmnIO9VrWHohy73Q4Nz4r8,8339
19
+ cobweb/distributed/launcher.py,sha256=WEEfZDdOXpEN5ljrYEGQWzPtDM7XcVczEnDO81yCoWg,9135
20
20
  cobweb/distributed/models.py,sha256=zRZfSOiP-OyvTVdI5_KScyf_jZmYmaYbxJvohf7ffDA,4390
21
21
  cobweb/single/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
22
  cobweb/single/models.py,sha256=lu8teNWnWcUwZFra8XmqyhzOAf3UyuEztwBr1Ne6pUs,2898
23
23
  cobweb/single/nest.py,sha256=mL8q9a5BjtoeUyzXCIVw_vyUsNY8ltbvQpYIIpZEDFU,5012
24
- cobweb_launcher-0.0.5.dist-info/LICENSE,sha256=z1rxSIGOyzcSb3orZxFPxzx-0C1vTocmswqBNxpKfEk,1063
25
- cobweb_launcher-0.0.5.dist-info/METADATA,sha256=Gym0QTYBbJfcZTxe3yuFLR94jwy1HYYV2c2yvnv2FNk,1225
26
- cobweb_launcher-0.0.5.dist-info/WHEEL,sha256=pkctZYzUS4AYVn6dJ-7367OJZivF2e8RA9b_ZBjif18,92
27
- cobweb_launcher-0.0.5.dist-info/top_level.txt,sha256=4GETBGNsKqiCUezmT-mJn7tjhcDlu7nLIV5gGgHBW4I,7
28
- cobweb_launcher-0.0.5.dist-info/RECORD,,
24
+ cobweb_launcher-0.0.7.dist-info/LICENSE,sha256=z1rxSIGOyzcSb3orZxFPxzx-0C1vTocmswqBNxpKfEk,1063
25
+ cobweb_launcher-0.0.7.dist-info/METADATA,sha256=ymYuybr2CYckZMJVx6diBVimAeGlu3X8OvkuxNeveRQ,1225
26
+ cobweb_launcher-0.0.7.dist-info/WHEEL,sha256=pkctZYzUS4AYVn6dJ-7367OJZivF2e8RA9b_ZBjif18,92
27
+ cobweb_launcher-0.0.7.dist-info/top_level.txt,sha256=4GETBGNsKqiCUezmT-mJn7tjhcDlu7nLIV5gGgHBW4I,7
28
+ cobweb_launcher-0.0.7.dist-info/RECORD,,