missionpanel 1.3.1__tar.gz → 1.4.1__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.1}/PKG-INFO +1 -1
  2. {missionpanel-1.3.1 → missionpanel-1.4.1}/missionpanel/example/ttrss.py +2 -1
  3. missionpanel-1.4.1/missionpanel/handler/__init__.py +3 -0
  4. missionpanel-1.4.1/missionpanel/handler/parallal_handler.py +37 -0
  5. {missionpanel-1.3.1 → missionpanel-1.4.1}/missionpanel.egg-info/PKG-INFO +1 -1
  6. {missionpanel-1.3.1 → missionpanel-1.4.1}/missionpanel.egg-info/SOURCES.txt +1 -0
  7. {missionpanel-1.3.1 → missionpanel-1.4.1}/setup.py +1 -1
  8. missionpanel-1.3.1/missionpanel/handler/__init__.py +0 -2
  9. {missionpanel-1.3.1 → missionpanel-1.4.1}/LICENSE +0 -0
  10. {missionpanel-1.3.1 → missionpanel-1.4.1}/README.md +0 -0
  11. {missionpanel-1.3.1 → missionpanel-1.4.1}/missionpanel/__init__.py +0 -0
  12. {missionpanel-1.3.1 → missionpanel-1.4.1}/missionpanel/example/__init__.py +0 -0
  13. {missionpanel-1.3.1 → missionpanel-1.4.1}/missionpanel/example/rsshub.py +0 -0
  14. {missionpanel-1.3.1 → missionpanel-1.4.1}/missionpanel/example/subprocess.py +0 -0
  15. {missionpanel-1.3.1 → missionpanel-1.4.1}/missionpanel/handler/handler.py +0 -0
  16. {missionpanel-1.3.1 → missionpanel-1.4.1}/missionpanel/orm/__init__.py +0 -0
  17. {missionpanel-1.3.1 → missionpanel-1.4.1}/missionpanel/orm/core.py +0 -0
  18. {missionpanel-1.3.1 → missionpanel-1.4.1}/missionpanel/orm/handler.py +0 -0
  19. {missionpanel-1.3.1 → missionpanel-1.4.1}/missionpanel/submitter/__init__.py +0 -0
  20. {missionpanel-1.3.1 → missionpanel-1.4.1}/missionpanel/submitter/abc.py +0 -0
  21. {missionpanel-1.3.1 → missionpanel-1.4.1}/missionpanel/submitter/asynchronous.py +0 -0
  22. {missionpanel-1.3.1 → missionpanel-1.4.1}/missionpanel/submitter/submitter.py +0 -0
  23. {missionpanel-1.3.1 → missionpanel-1.4.1}/missionpanel.egg-info/dependency_links.txt +0 -0
  24. {missionpanel-1.3.1 → missionpanel-1.4.1}/missionpanel.egg-info/requires.txt +0 -0
  25. {missionpanel-1.3.1 → missionpanel-1.4.1}/missionpanel.egg-info/top_level.txt +0 -0
  26. {missionpanel-1.3.1 → missionpanel-1.4.1}/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.1
4
4
  Summary: A mission panel
5
5
  Home-page: https://github.com/yindaheng98/missionpanel
6
6
  Author: yindaheng98
@@ -2,6 +2,7 @@ import abc
2
2
  import asyncio
3
3
  import json
4
4
  import logging
5
+ import traceback
5
6
  from typing import Any, AsyncGenerator, Dict, List, Union
6
7
  import httpx
7
8
  from xml.etree import ElementTree
@@ -113,7 +114,7 @@ class TTRSSSubmitter(AsyncSubmitter, metaclass=abc.ABCMeta):
113
114
  if len(tags) > 0:
114
115
  await self.add_tags(matchers, tags)
115
116
  except Exception as e:
116
- self.logger.warning(f'create mission failed, error: {e}')
117
+ self.logger.warning(f'create mission failed, error: {e}, traceback: {traceback.format_exc()}')
117
118
  mission_content_queue.task_done()
118
119
 
119
120
  mission_task_ = asyncio.create_task(mission_task())
@@ -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.1
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.1',
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