cobweb-launcher 1.3.8__py3-none-any.whl → 1.3.10__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.
cobweb/base/__init__.py CHANGED
@@ -59,7 +59,7 @@ class TaskQueue:
59
59
  else:
60
60
  raise TypeError(f"{crawler_func.__name__} function return type isn't supported")
61
61
  TaskQueue.DOT.build(
62
- topic=f"{os.getenv('PROJECT')}:{os.getenv('TASK')}",
62
+ topic=f"{os.getenv('PROJECT')}:{os.getenv('TASK')}:{tk.__class__.__name__}",
63
63
  cost_time=round(time.time() - start_time, 2),
64
64
  **tk.to_dict
65
65
  )
@@ -144,30 +144,30 @@ class Launcher(threading.Thread):
144
144
 
145
145
  @Decorators.stop
146
146
  def _polling(self):
147
- if TaskQueue.is_empty():
148
- if self.pause.is_set():
149
- run_time = int(time.time()) - self.app_time
150
- if not self.task_model and run_time > self.before_scheduler_wait_seconds:
151
- logger.info("Done! ready to close thread...")
152
- self.stop.set()
153
- elif TaskQueue.TODO.length or TaskQueue.DOWNLOAD.length:
154
- logger.info(f"Recovery {self.task} task run!")
155
- self.check_emtpy_times = 0
156
- self.pause.clear()
157
- else:
158
- logger.info("pause! waiting for resume...")
159
- elif self.check_emtpy_times > 2:
160
- logger.info("pause! waiting for resume...")
161
- self.doing_seeds = {}
162
- self._task_info['todo'] = {}
163
- self._task_info['download'] = {}
164
- self.pause.set()
147
+ time.sleep(10)
148
+ if self.pause.is_set():
149
+ run_time = int(time.time()) - self.app_time
150
+ if not self.task_model and run_time > self.before_scheduler_wait_seconds:
151
+ logger.info("Done! ready to close thread...")
152
+ self.stop.set()
153
+ elif TaskQueue.TODO.length or TaskQueue.DOWNLOAD.length:
154
+ logger.info(f"Recovery {self.task} task run!")
155
+ self.check_emtpy_times = 0
156
+ self.pause.clear()
165
157
  else:
166
- logger.info(
167
- "check whether the task is complete, "
168
- f"reset times {3 - self.check_emtpy_times}"
169
- )
170
- self.check_emtpy_times += 1
158
+ logger.info("pause! waiting for resume...")
159
+ elif TaskQueue.is_empty() and self.check_emtpy_times > 2:
160
+ logger.info("pause! waiting for resume...")
161
+ self.doing_seeds = {}
162
+ self._task_info['todo'] = {}
163
+ self._task_info['download'] = {}
164
+ self.pause.set()
165
+ elif TaskQueue.is_empty():
166
+ logger.info(
167
+ "check whether the task is complete, "
168
+ f"reset times {3 - self.check_emtpy_times}"
169
+ )
170
+ self.check_emtpy_times += 1
171
171
  else:
172
172
  logger.info(LogTemplate.launcher_polling.format(
173
173
  task=self.task,
@@ -182,7 +182,6 @@ class Launcher(threading.Thread):
182
182
  seed_queue_len=TaskQueue.SEED.length,
183
183
  download_queue_len=TaskQueue.DOWNLOAD.length
184
184
  ))
185
- time.sleep(10)
186
185
 
187
186
  def run(self):
188
187
  Crawler = dynamic_load_class(self.crawler_path)
@@ -33,7 +33,7 @@ class ApiScheduler:
33
33
  members = self._db.members(key, source, count=count, _min=0, _max="(1000")
34
34
  for member, priority in members:
35
35
  # seed = Seed(member, priority=priority)
36
- yield member.decode(), priority
36
+ yield member, priority
37
37
 
38
38
  def insert(self, key, items):
39
39
  if items:
@@ -48,7 +48,8 @@ class ApiScheduler:
48
48
  _min = reset_time - int(time.time()) if self.heartbeat else "-inf"
49
49
 
50
50
  for key in keys:
51
- self._db.members(key, 0, _min=_min, _max="(0")
51
+ if self._db.exists(key):
52
+ self._db.members(key, 0, _min=_min, _max="(0")
52
53
 
53
54
  if not self.heartbeat:
54
55
  self.working.set()
@@ -58,11 +59,13 @@ class ApiScheduler:
58
59
 
59
60
  def refresh(self, key, items: dict[str, int]):
60
61
  refresh_time = int(time.time())
61
- its = {k: -refresh_time - v / 1000 for k, v in items}
62
- self._db.zadd(key, item=its, xx=True)
62
+ its = {k: -refresh_time - v / 1000 for k, v in items.items()}
63
+ if its:
64
+ self._db.zadd(key, item=its, xx=True)
63
65
 
64
66
  def delete(self, key, values):
65
- self._db.zrem(key, *values)
67
+ if values:
68
+ self._db.zrem(key, *values)
66
69
 
67
70
 
68
71
 
@@ -33,7 +33,7 @@ class RedisScheduler:
33
33
  members = self._db.members(key, source, count=count, _min=0, _max="(1000")
34
34
  for member, priority in members:
35
35
  # seed = Seed(member, priority=priority)
36
- yield member.decode(), priority
36
+ yield member, priority
37
37
 
38
38
  def insert(self, key, items):
39
39
  if items:
@@ -48,7 +48,8 @@ class RedisScheduler:
48
48
  _min = reset_time - int(time.time()) if self.heartbeat else "-inf"
49
49
 
50
50
  for key in keys:
51
- self._db.members(key, 0, _min=_min, _max="(0")
51
+ if self._db.exists(key):
52
+ self._db.members(key, 0, _min=_min, _max="(0")
52
53
 
53
54
  if not self.heartbeat:
54
55
  self.working.set()
@@ -58,11 +59,13 @@ class RedisScheduler:
58
59
 
59
60
  def refresh(self, key, items: dict[str, int]):
60
61
  refresh_time = int(time.time())
61
- its = {k: -refresh_time - v / 1000 for k, v in items}
62
- self._db.zadd(key, item=its, xx=True)
62
+ its = {k: -refresh_time - v / 1000 for k, v in items.items()}
63
+ if its:
64
+ self._db.zadd(key, item=its, xx=True)
63
65
 
64
66
  def delete(self, key, values):
65
- self._db.zrem(key, *values)
67
+ if values:
68
+ self._db.zrem(key, *values)
66
69
 
67
70
 
68
71
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cobweb-launcher
3
- Version: 1.3.8
3
+ Version: 1.3.10
4
4
  Summary: spider_hole
5
5
  Home-page: https://github.com/Juannie-PP/cobweb
6
6
  Author: Juannie-PP
@@ -1,7 +1,7 @@
1
1
  cobweb/__init__.py,sha256=oaEfsGUuGP0s39UbFRwrnsjMUeuB6QvQIAwStKFyUTk,83
2
2
  cobweb/constant.py,sha256=eofONAntk9O6S-cb4KbYGYHL_u7nBlOqqFOw_HzJHAU,3588
3
3
  cobweb/setting.py,sha256=pY6LKsgWI3164GiGA1z_y26LVf5-3mpiEgmm86mKRdY,3135
4
- cobweb/base/__init__.py,sha256=HHxaDy0x6HKOq5BPhl8eNgqPx06-XYWe-WrM0GQZDDY,5108
4
+ cobweb/base/__init__.py,sha256=HWcjTGKYXCnbmeb70QMqyLwUGxPuxx9IxUJG6PxKpF8,5132
5
5
  cobweb/base/basic.py,sha256=s5G4LBZiLUfoymV-gLSIqeH-OJ7q7-L35sBa6xEH3EI,7666
6
6
  cobweb/base/common_queue.py,sha256=Gor7sR3h1hlZWaI0XcNAbf0S15Ftjr3DFRWNTGL13uU,1137
7
7
  cobweb/base/dotting.py,sha256=lfFXXqnVP__hxlW3qH5Bnuq69KtnFaQLbcz1M8e2Ajg,1239
@@ -18,7 +18,7 @@ cobweb/db/redis_db.py,sha256=FvMzckJtmhwKhZqKoS23iXmJti5P2dnMVD5rJ__5LUw,5139
18
18
  cobweb/exceptions/__init__.py,sha256=E9SHnJBbhD7fOgPFMswqyOf8SKRDrI_i25L0bSpohvk,32
19
19
  cobweb/exceptions/oss_db_exception.py,sha256=iP_AImjNHT3-Iv49zCFQ3rdLnlvuHa3h2BXApgrOYpA,636
20
20
  cobweb/launchers/__init__.py,sha256=m_XNG2bWuMbirPt3d0_s-Ezl1xycfUxeqZnwq_kkfuo,116
21
- cobweb/launchers/launcher.py,sha256=NFwpc_0Um0hbDm1A8glWA4fcW6mNYL1eon4t3JAQUlw,7411
21
+ cobweb/launchers/launcher.py,sha256=O7HjZ2lewsZ5IIiZ2vhCAqGidJ1JKMxS5fs4KlslBkA,7332
22
22
  cobweb/launchers/launcher_air.py,sha256=yPr395HVIIHAq6lqRcYJu7c0KkfO9V8O-2sn0hC96p0,2990
23
23
  cobweb/launchers/launcher_api.py,sha256=TfLrLXazFWsOJLI7caMGfZozCttL1WTwTo3uUpN_FV0,3370
24
24
  cobweb/launchers/launcher_pro.py,sha256=2H-TcvQx-ga78GLNTa-GXMLYAj9nEeCJSWf8xl-1ISQ,3374
@@ -27,14 +27,14 @@ cobweb/pipelines/pipeline.py,sha256=Pycm22bHId9a3gdP81D5y7SsuMndYooTb5n4zQxP7dM,
27
27
  cobweb/pipelines/pipeline_console.py,sha256=NEh-4zhuVAQOqwXLsqeb-rcNZ9_KXFUpL3otUTL5qBs,754
28
28
  cobweb/pipelines/pipeline_loghub.py,sha256=xZ6D55BGdiM71WUv83jyLGbEyUwhBHLJRZoXthBxxTs,1019
29
29
  cobweb/schedulers/__init__.py,sha256=y7Lv_7b0zfTl0OhIONb_8u1K1C9gVlBA-xz_XG_kI9g,85
30
- cobweb/schedulers/scheduler_api.py,sha256=mC54QOS0PEu4SFvxfD5Qr9239hAxwMrKTg-33rirANE,2112
31
- cobweb/schedulers/scheduler_redis.py,sha256=Aw7de0sXigRAxJgqUhHWu30hMBzgEWjkj-3OXXqmldg,2118
30
+ cobweb/schedulers/scheduler_api.py,sha256=pFEdS1H4zuzxwMhCV-G7CoLz-rEOPv4EVo3xZUXTyDo,2199
31
+ cobweb/schedulers/scheduler_redis.py,sha256=E5fjc3nNld8GbUhUGT7uY4smRejj2J2ZIzp2g6lhxFM,2205
32
32
  cobweb/utils/__init__.py,sha256=YvD4mIDBd9jmGA6WJBcwkgDU2jRFNBCEbarZCSUBAHE,114
33
33
  cobweb/utils/bloom.py,sha256=vng-YbKgh9HbtpAWYf_nkUSbfVTOj40aqUUejRYlsCU,1752
34
34
  cobweb/utils/oss.py,sha256=6Qlhdde7CcwD69bBe2rGWHY3-aptG9NXB_DZLhjgDRQ,3553
35
35
  cobweb/utils/tools.py,sha256=5JEaaAwYoV9Sdla2UBIJn6faUBuXmxUMagm9ck6FVqs,1253
36
- cobweb_launcher-1.3.8.dist-info/LICENSE,sha256=z1rxSIGOyzcSb3orZxFPxzx-0C1vTocmswqBNxpKfEk,1063
37
- cobweb_launcher-1.3.8.dist-info/METADATA,sha256=vxO6miknf7w1rom7AF3FubCwBiiYCHgS5xXVGKNdQdk,6509
38
- cobweb_launcher-1.3.8.dist-info/WHEEL,sha256=ewwEueio1C2XeHTvT17n8dZUJgOvyCWCt0WVNLClP9o,92
39
- cobweb_launcher-1.3.8.dist-info/top_level.txt,sha256=4GETBGNsKqiCUezmT-mJn7tjhcDlu7nLIV5gGgHBW4I,7
40
- cobweb_launcher-1.3.8.dist-info/RECORD,,
36
+ cobweb_launcher-1.3.10.dist-info/LICENSE,sha256=z1rxSIGOyzcSb3orZxFPxzx-0C1vTocmswqBNxpKfEk,1063
37
+ cobweb_launcher-1.3.10.dist-info/METADATA,sha256=_OKrcjWsAAL5b8PmzTHSTMo0xj3gpxv0aHFXSbVdAgc,6510
38
+ cobweb_launcher-1.3.10.dist-info/WHEEL,sha256=ewwEueio1C2XeHTvT17n8dZUJgOvyCWCt0WVNLClP9o,92
39
+ cobweb_launcher-1.3.10.dist-info/top_level.txt,sha256=4GETBGNsKqiCUezmT-mJn7tjhcDlu7nLIV5gGgHBW4I,7
40
+ cobweb_launcher-1.3.10.dist-info/RECORD,,