Support selectable demo exchanges and configurable analysis limits
Persist manual requests until exchange confirmation, preserve stop protection, and reconcile fills before settling plans. Tighten model stream, crawler, skill, research accounting, and frontend race handling, with regression coverage. Keep queued analyses pending until a fresh account snapshot is available.
This commit is contained in:
1 parent
fcaedfb358
commit
285b3952d7
33 files changed
+1890
-325
No files matched your search
@@ -111,6 +111,7 @@ class NewsSpider(RedisSpider):
|
||||
crawler.signals.connect(spider._on_opened, signal=signals.spider_opened)
|
||||
crawler.signals.connect(spider._on_idle, signal=signals.spider_idle)
|
||||
crawler.signals.connect(spider._on_error, signal=signals.spider_error)
|
||||
crawler.signals.connect(spider._on_item_error, signal=signals.item_error)
|
||||
crawler.signals.connect(spider._on_closed, signal=signals.spider_closed)
|
||||
return spider
|
||||
|
||||
@@ -182,6 +183,10 @@ class NewsSpider(RedisSpider):
|
||||
if self.run:
|
||||
self.run.errors.append(f"解析异常 {response.url}:{failure.value!r}")
|
||||
|
||||
def _on_item_error(self, failure: Failure) -> None:
|
||||
if self.run:
|
||||
self.run.errors.append(f"新闻处理或落库失败:{failure.value!r}")
|
||||
|
||||
async def _on_closed(self) -> None:
|
||||
self.logger.info("采集进程退出")
|
||||
await self._flush_logs()
|
||||
|
||||
Reference in new issue
Block a user