Skip to content
项目
群组
代码片段
帮助
正在加载...
登录
切换导航
I
ils-common-video
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
提交
议题看板
打开侧边栏
OpsTeam
ils-common-video
Commits
d1dc0b7e
提交
d1dc0b7e
authored
5月 25, 2021
作者:
zw.wang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat: [tasks] 新增在线时长和离线时长
上级
3d52fc30
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
36 行增加
和
9 行删除
+36
-9
tasks.py
isc_video_record/tasks.py
+34
-8
setup.py
setup.py
+2
-1
没有找到文件。
isc_video_record/tasks.py
浏览文件 @
d1dc0b7e
import
tempfile
import
os
import
pytz
import
pandas
as
pd
from
apscheduler.schedulers.blocking
import
BlockingScheduler
from
datetime
import
datetime
,
timedelta
...
...
@@ -137,20 +138,33 @@ class Tasks:
"""
headers
=
[
'摄像头序列号'
,
'摄像头名称'
,
'IndexCode'
,
'总时长'
,
'完成'
,
'失败'
,
'未处理'
,
'未知'
'总时长'
,
'完成'
,
'失败'
,
'未处理'
,
'未知'
,
'在线时长'
,
'离线时长'
]
columns
=
[
'device_code'
,
'camera_name'
,
'point_index_code'
,
'total'
,
'done'
,
'failed'
,
'untreated'
,
'unknown'
'total'
,
'done'
,
'failed'
,
'untreated'
,
'unknown'
,
'online_duration'
,
'offline_duration'
]
end_time
=
datetime
.
utcnow
()
.
astimezone
(
tz
)
.
replace
(
hour
=
0
,
minute
=
0
,
second
=
0
)
query_str
=
'''
select *
from one_week.isc_camera_status
where time > '{}'
and time < '{}'
and camera_code = '{}';
'''
influxdb
.
reconnect
()
end_time_cst
=
datetime
.
utcnow
()
.
astimezone
(
tz
)
.
replace
(
hour
=
0
,
minute
=
0
,
second
=
0
)
end_time
=
end_time_cst
.
astimezone
(
pytz
.
utc
)
start_time
=
end_time
-
timedelta
(
days
=
1
)
file_name
=
'isc-daily-{}.xlsx'
.
format
(
end_time
.
strftime
(
'
%
Y
%
m
%
d'
))
file_name
=
'isc-daily-{}.xlsx'
.
format
(
end_time
_cst
.
strftime
(
'
%
Y
%
m
%
d'
))
camera_count
=
0
daily_total_duration
=
daily_done_duration
=
0
daily_failed_duration
=
daily_retry_duration
=
0
results
=
[]
influxdb
.
reconnect
()
for
camera
in
get_camera_info
():
done
=
failed
=
untreated
=
unknown
=
total
=
0
...
...
@@ -168,14 +182,26 @@ class Tasks:
untreated
+=
duration
else
:
unknown
+=
duration
# TODO 在线和离线时间
camera
[
'done'
]
=
get_time_str
(
done
)
camera
[
'failed'
]
=
get_time_str
(
failed
)
camera
[
'untreated'
]
=
get_time_str
(
untreated
)
camera
[
'unknown'
]
=
get_time_str
(
unknown
)
camera
[
'total'
]
=
get_time_str
(
total
)
res
=
influxdb
.
query
(
query_str
.
format
(
start_time
.
strftime
(
'
%
Y-
%
m-
%
d
%
H:
%
M:
%
S'
),
end_time
.
strftime
(
'
%
Y-
%
m-
%
d
%
H:
%
M:
%
S'
),
camera
[
'device_code'
]))
online_seconds
=
offline_seconds
=
0
if
res
and
res
[
'isc_camera_status'
]:
df
=
pd
.
DataFrame
(
res
[
'isc_camera_status'
])
df
.
index
=
df
[
'time'
]
online_seconds
=
len
(
df
[
df
[
'value'
]
==
1
])
*
190
offline_seconds
=
len
(
df
[
df
[
'value'
]
==
0
])
*
190
camera
[
'online_duration'
]
=
get_time_str
(
online_seconds
)
camera
[
'offline_duration'
]
=
get_time_str
(
offline_seconds
)
results
.
append
(
camera
)
daily_total_duration
+=
total
...
...
@@ -192,7 +218,7 @@ class Tasks:
send_markdown
(
'isc-daily'
,
daily_text
.
format
(
end_time
.
strftime
(
'
%
Y-
%
m-
%
d'
),
end_time
_cst
.
strftime
(
'
%
Y-
%
m-
%
d'
),
camera_count
,
get_time_str
(
daily_total_duration
),
get_time_str
(
daily_done_duration
),
...
...
setup.py
浏览文件 @
d1dc0b7e
...
...
@@ -18,7 +18,8 @@ requires = [
'retrying'
,
'oss2'
,
'apscheduler'
,
'openpyxl'
'openpyxl'
,
'pandas'
]
setuptools
.
setup
(
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论