Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
csst-cicd
csst-dag
Commits
905613a9
Commit
905613a9
authored
Apr 30, 2025
by
BO ZHANG
🏀
Browse files
update DFS
parent
58b0d2f9
Changes
1
Show whitespace changes
Inline
Side-by-side
csst_dag/dfs.py
View file @
905613a9
...
...
@@ -3,26 +3,46 @@ import toml
import
os
from
csst_dfs_client
import
plan
,
level0
from
astropy.table
import
Table
import
socket
CONFIG
=
toml
.
load
(
os
.
path
.
join
(
os
.
path
.
dirname
(
__file__
),
"config"
,
"config.toml"
))
def
check_port
(
ip
,
port
,
timeout
=
3
):
"""
# # 示例:检查 192.168.1.1 的 80 端口是否开放
# print(check_port("192.168.1.1", 80)) # True/False
"""
try
:
# 创建 Socket 连接(TCP)
sock
=
socket
.
socket
(
socket
.
AF_INET
,
socket
.
SOCK_STREAM
)
sock
.
settimeout
(
timeout
)
# 设置超时时间(秒)
# 尝试连接
result
=
sock
.
connect_ex
((
ip
,
port
))
# 返回状态
if
result
==
0
:
# 0 表示成功
return
True
else
:
return
False
except
Exception
as
e
:
print
(
f
"Error:
{
e
}
"
)
return
False
finally
:
sock
.
close
()
# 确保关闭连接
class
DFS
:
def
__init__
(
self
,
location
=
None
):
# try each location
print
(
"Test all locations:"
)
status_list
=
[]
for
loc
in
CONFIG
.
keys
():
# print("Setting DFS config:")
for
k
,
v
in
CONFIG
[
loc
][
"dfs"
].
items
():
os
.
environ
.
setdefault
(
k
,
str
(
v
))
# print("Setting redis config:")
redis
=
Redis
(
location
=
loc
)
this_dfs_status
=
plan
.
find
(
instrument
=
""
).
success
try
:
this_redis_status
=
redis
.
ping
()
except
BaseException
:
this_redis_status
=
False
dfs_ip
=
CONFIG
[
loc
][
"dfs"
][
"CSST_DFS_GATEWAY"
].
split
(
":"
)[
0
]
dfs_port
=
int
(
CONFIG
[
loc
][
"dfs"
][
"CSST_DFS_GATEWAY"
].
split
(
":"
)[
1
])
redis_ip
=
CONFIG
[
loc
][
"redis"
][
"host"
]
redis_port
=
CONFIG
[
loc
][
"redis"
][
"port"
]
this_dfs_status
=
check_port
(
dfs_ip
,
dfs_port
,
timeout
=
1
)
this_redis_status
=
check_port
(
redis_ip
,
redis_port
,
timeout
=
1
)
this_status
=
dict
(
location
=
loc
,
status
=
this_dfs_status
and
this_redis_status
,
...
...
@@ -30,6 +50,7 @@ class DFS:
redis
=
this_redis_status
,
)
status_list
.
append
(
this_status
)
print
(
this_status
)
status_table
=
Table
(
status_list
)
print
(
status_table
)
...
...
@@ -49,7 +70,7 @@ class DFS:
class
Redis
(
redis
.
Redis
):
def
__init__
(
self
,
location
=
"naoc"
):
def
__init__
(
self
,
location
=
"naoc"
,
**
kwargs
):
if
location
not
in
CONFIG
.
keys
():
print
(
"Available redis locations: "
,
list
(
CONFIG
.
keys
()))
raise
ValueError
(
f
"Unknown redis location:
{
location
}
"
)
...
...
@@ -58,6 +79,7 @@ class Redis(redis.Redis):
port
=
CONFIG
[
location
][
"redis"
][
"port"
],
db
=
CONFIG
[
location
][
"redis"
][
"db"
],
password
=
CONFIG
[
location
][
"redis"
][
"password"
],
**
kwargs
,
)
self
.
qname
=
password
=
CONFIG
[
location
][
"redis"
][
"qname"
]
self
.
config
=
CONFIG
[
location
][
"redis"
]
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment