missionpanel 1.3.1__tar.gz → 1.4.0__tar.gz

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.
Files changed (26) hide show
  1. {missionpanel-1.3.1 → missionpanel-1.4.0}/PKG-INFO +1 -1
  2. missionpanel-1.4.0/missionpanel/handler/__init__.py +3 -0
  3. missionpanel-1.4.0/missionpanel/handler/parallal_handler.py +37 -0
  4. {missionpanel-1.3.1 → missionpanel-1.4.0}/missionpanel.egg-info/PKG-INFO +1 -1
  5. {missionpanel-1.3.1 → missionpanel-1.4.0}/missionpanel.egg-info/SOURCES.txt +1 -0
  6. {missionpanel-1.3.1 → missionpanel-1.4.0}/setup.py +1 -1
  7. missionpanel-1.3.1/missionpanel/handler/__init__.py +0 -2
  8. {missionpanel-1.3.1 → missionpanel-1.4.0}/LICENSE +0 -0
  9. {missionpanel-1.3.1 → missionpanel-1.4.0}/README.md +0 -0
  10. {missionpanel-1.3.1 → missionpanel-1.4.0}/missionpanel/__init__.py +0 -0
  11. {missionpanel-1.3.1 → missionpanel-1.4.0}/missionpanel/example/__init__.py +0 -0
  12. {missionpanel-1.3.1 → missionpanel-1.4.0}/missionpanel/example/rsshub.py +0 -0
  13. {missionpanel-1.3.1 → missionpanel-1.4.0}/missionpanel/example/subprocess.py +0 -0
  14. {missionpanel-1.3.1 → missionpanel-1.4.0}/missionpanel/example/ttrss.py +0 -0
  15. {missionpanel-1.3.1 → missionpanel-1.4.0}/missionpanel/handler/handler.py +0 -0
  16. {missionpanel-1.3.1 → missionpanel-1.4.0}/missionpanel/orm/__init__.py +0 -0
  17. {missionpanel-1.3.1 → missionpanel-1.4.0}/missionpanel/orm/core.py +0 -0
  18. {missionpanel-1.3.1 → missionpanel-1.4.0}/missionpanel/orm/handler.py +0 -0
  19. {missionpanel-1.3.1 → missionpanel-1.4.0}/missionpanel/submitter/__init__.py +0 -0
  20. {missionpanel-1.3.1 → missionpanel-1.4.0}/missionpanel/submitter/abc.py +0 -0
  21. {missionpanel-1.3.1 → missionpanel-1.4.0}/missionpanel/submitter/asynchronous.py +0 -0
  22. {missionpanel-1.3.1 → missionpanel-1.4.0}/missionpanel/submitter/submitter.py +0 -0
  23. {missionpanel-1.3.1 → missionpanel-1.4.0}/missionpanel.egg-info/dependency_links.txt +0 -0
  24. {missionpanel-1.3.1 → missionpanel-1.4.0}/missionpanel.egg-info/requires.txt +0 -0
  25. {missionpanel-1.3.1 → missionpanel-1.4.0}/missionpanel.egg-info/top_level.txt +0 -0
  26. {missionpanel-1.3.1 → missionpanel-1.4.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: missionpanel
3
- Version: 1.3.1
3
+ Version: 1.4.0
4
4
  Summary: A mission panel
5
5
  Home-page: https://github.com/yindaheng98/missionpanel
6
6
  Author: yindaheng98
@@ -0,0 +1,3 @@
1
+ from .handler import Handler
2
+ from .handler import AsyncHandler
3
+ from .parallal_handler import ParallelAsyncHandler
@@ -0,0 +1,37 @@
1
+ import abc
2
+ import asyncio
3
+ from typing import List
4
+
5
+ from missionpanel.orm import Mission, Attempt
6
+ from .handler import AsyncHandler, HandlerInterface
7
+
8
+
9
+ class ParallelAsyncHandler(AsyncHandler, abc.ABC):
10
+ def __init__(self, n_parallel: int, *args, **kwargs):
11
+ super().__init__(*args, **kwargs)
12
+ self.task_queue = asyncio.Queue(n_parallel)
13
+ for i in range(n_parallel):
14
+ self.task_queue.put_nowait(i)
15
+ self.task_dict = {}
16
+ self.sem_report = asyncio.Semaphore(1)
17
+
18
+ async def report_attempt(self, mission: Mission, attempt: Attempt):
19
+ async with self.sem_report:
20
+ await super().report_attempt(mission, attempt)
21
+
22
+ async def run_all(self, tags: List[str]):
23
+ async def task(mission: Mission, attempt: Attempt, id: int):
24
+ attempt = await self.watchdog_mission(mission, attempt)
25
+ await self.task_queue.put(id)
26
+ return attempt
27
+ while True:
28
+ id = await self.task_queue.get()
29
+ async with self.sem_report:
30
+ mission = await self.get_mission(tags)
31
+ if mission is None:
32
+ break
33
+ attempt = HandlerInterface.create_attempt(self.session, mission, self.name, self.max_time_interval)
34
+ self.task_dict[id] = asyncio.create_task(task(mission, attempt, id))
35
+ for i in self.task_dict:
36
+ await self.task_dict[i]
37
+ del self.task_dict[i]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: missionpanel
3
- Version: 1.3.1
3
+ Version: 1.4.0
4
4
  Summary: A mission panel
5
5
  Home-page: https://github.com/yindaheng98/missionpanel
6
6
  Author: yindaheng98
@@ -13,6 +13,7 @@ missionpanel/example/subprocess.py
13
13
  missionpanel/example/ttrss.py
14
14
  missionpanel/handler/__init__.py
15
15
  missionpanel/handler/handler.py
16
+ missionpanel/handler/parallal_handler.py
16
17
  missionpanel/orm/__init__.py
17
18
  missionpanel/orm/core.py
18
19
  missionpanel/orm/handler.py
@@ -12,7 +12,7 @@ package_dir = {
12
12
 
13
13
  setup(
14
14
  name='missionpanel',
15
- version='1.3.1',
15
+ version='1.4.0',
16
16
  author='yindaheng98',
17
17
  author_email='yindaheng98@gmail.com',
18
18
  url='https://github.com/yindaheng98/missionpanel',
@@ -1,2 +0,0 @@
1
- from .handler import Handler
2
- from .handler import AsyncHandler
File without changes
File without changes
File without changes