Skip to content

Commit

Permalink
fix 站点数据有站点连接不成功时,一直会刷新的问题
Browse files Browse the repository at this point in the history
  • Loading branch information
jxxghp committed Dec 25, 2022
1 parent 1f1dd0a commit 2478d5c
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 25 deletions.
37 changes: 16 additions & 21 deletions app/sites/sites.py
Original file line number Diff line number Diff line change
Expand Up @@ -164,30 +164,38 @@ def get_site_favicon(self, site_name=None):
else:
return self._site_favicons

def refresh_all_site_data(self, force=False, specify_sites=None):
def __refresh_all_site_data(self, force=False, specify_sites=None):
"""
多线程刷新站点下载上传量,默认间隔6小时
"""
if not self._sites:
return
if not force and self._last_update_time and (datetime.now() - self._last_update_time).seconds < 6 * 3600:

if not force \
and not specify_sites \
and self._last_update_time \
and (datetime.now() - self._last_update_time).seconds < 6 * 3600:
return

if specify_sites \
and not isinstance(specify_sites, list):
specify_sites = [specify_sites]

with lock:
# 没有指定站点,默认使用全部站点
if not specify_sites:
refresh_sites = self.get_sites(statistic=True)
else:
refresh_sites = [site for site in self.get_sites(statistic=True) if site.get("name") in specify_sites]

if not refresh_sites:
return

refresh_all = len(self.get_sites(statistic=True)) == len(refresh_sites)

# 并发刷新
with ThreadPool(min(len(refresh_sites), self._MAX_CONCURRENCY)) as p:
site_user_infos = p.map(self.__refresh_site_data, refresh_sites)
site_user_infos = [info for info in site_user_infos if info]

# 登记历史数据
self.dbhelper.insert_site_statistics_history(site_user_infos)
# 实时用户数据
Expand All @@ -198,8 +206,7 @@ def refresh_all_site_data(self, force=False, specify_sites=None):
self.dbhelper.update_site_seed_info(site_user_infos)

# 更新时间
if refresh_all:
self._last_update_time = datetime.now()
self._last_update_time = datetime.now()

# 站点图标重新加载
self.__init_favicons()
Expand Down Expand Up @@ -443,13 +450,13 @@ def refresh_pt_date_now(self):
"""
强制刷新站点数据
"""
self.refresh_all_site_data(True)
self.__refresh_all_site_data(force=True)

def get_pt_date(self):
def get_pt_date(self, specify_sites=None, force=False):
"""
获取站点上传下载量
"""
self.refresh_all_site_data()
self.__refresh_all_site_data(force=force, specify_sites=specify_sites)
return self._sites_data

def get_pt_site_statistics_history(self, days=7):
Expand Down Expand Up @@ -504,18 +511,6 @@ def __todict(raw_statistics):
})
return statistics

def refresh_pt(self, specify_sites=None):
"""
强制刷新指定站点数据
"""
if not specify_sites:
return

if not isinstance(specify_sites, list):
specify_sites = [specify_sites]

self.refresh_all_site_data(force=True, specify_sites=specify_sites)

def get_pt_site_activity_history(self, site, days=365 * 2):
"""
查询站点 上传,下载,做种数据
Expand Down
6 changes: 3 additions & 3 deletions web/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -437,6 +437,8 @@ def torrent_remove():
def statistics():
# 刷新单个site
refresh_site = request.args.getlist("refresh_site")
# 强制刷新所有
refresh_force = True if request.args.get("refresh_force") else False
# 总上传下载
TotalUpload = 0
TotalDownload = 0
Expand All @@ -448,10 +450,8 @@ def statistics():
SiteDownloads = []
SiteRatios = []
SiteErrs = {}
# 刷新指定站点
Sites().refresh_pt(specify_sites=refresh_site)
# 站点上传下载
SiteData = Sites().get_pt_date()
SiteData = Sites().get_pt_date(specify_sites=refresh_site, force=refresh_force)
if isinstance(SiteData, dict):
for name, data in SiteData.items():
if not data:
Expand Down
2 changes: 1 addition & 1 deletion web/templates/site/statistics.html
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,7 @@ <h3 class="card-title">站点数据</h3>
</div>
<div class="ms-auto">
<a href="javascript:void(0)" class="btn-icon" {% if SiteUserStatistics | count> 0 %}
onclick="navmenu('statistics?_ts={% for item in SiteUserStatistics %}&refresh_site={{ item.site }}{% endfor %}')"
onclick="navmenu('statistics?refresh_force=1')"
{% endif %}
>
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-refresh" width="24"
Expand Down

0 comments on commit 2478d5c

Please sign in to comment.