Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
J
jumpserver
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ops
jumpserver
Commits
c995050e
Commit
c995050e
authored
Oct 23, 2019
by
ibuler
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[Update] 修改ws read celery log file
parent
0dbf2ab2
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
38 additions
and
39 deletions
+38
-39
ws.py
apps/ops/ws.py
+38
-39
No files found.
apps/ops/ws.py
View file @
c995050e
...
@@ -23,47 +23,46 @@ class CeleryLogWebsocket(JsonWebsocketConsumer):
...
@@ -23,47 +23,46 @@ class CeleryLogWebsocket(JsonWebsocketConsumer):
if
task_id
:
if
task_id
:
self
.
handle_task
(
task_id
)
self
.
handle_task
(
task_id
)
def
handle_task
(
self
,
task_id
):
def
wait_util_log_path_exist
(
self
,
task_id
):
logger
.
info
(
"Task id: {}"
.
format
(
task_id
))
log_path
=
get_celery_task_log_path
(
task_id
)
log_path
=
get_celery_task_log_path
(
task_id
)
while
not
self
.
disconnected
:
if
not
os
.
path
.
exists
(
log_path
):
self
.
send_json
({
'message'
:
'.'
,
'task'
:
task_id
})
time
.
sleep
(
0.5
)
continue
self
.
send_json
({
'message'
:
'
\r\n
'
})
try
:
logger
.
debug
(
'Task log path: {}'
.
format
(
log_path
))
task_log_f
=
open
(
log_path
,
'rb'
)
return
task_log_f
except
OSError
:
return
None
def
read_log_file
(
self
,
task_id
):
task_log_f
=
self
.
wait_util_log_path_exist
(
task_id
)
if
not
task_log_f
:
return
task_end_mark
=
[]
while
not
self
.
disconnected
:
data
=
task_log_f
.
read
(
4096
)
if
data
:
data
=
data
.
replace
(
b
'
\n
'
,
b
'
\r\n
'
)
self
.
send_json
(
{
'message'
:
data
.
decode
(
errors
=
'ignore'
),
'task'
:
task_id
})
if
data
.
find
(
b
'succeeded in'
)
!=
-
1
:
task_end_mark
.
append
(
1
)
if
data
.
find
(
bytes
(
task_id
,
'utf8'
))
!=
-
1
:
task_end_mark
.
append
(
1
)
elif
len
(
task_end_mark
)
==
2
:
logger
.
debug
(
'Task log end: {}'
.
format
(
task_id
))
break
time
.
sleep
(
0.2
)
task_log_f
.
close
()
def
func
():
def
handle_task
(
self
,
task_id
):
task_log_f
=
None
logger
.
info
(
"Task id: {}"
.
format
(
task_id
))
thread
=
threading
.
Thread
(
target
=
self
.
read_log_file
,
args
=
(
task_id
,))
while
not
self
.
disconnected
:
if
not
os
.
path
.
exists
(
log_path
):
self
.
send_json
({
'message'
:
'.'
,
'task'
:
task_id
})
time
.
sleep
(
0.5
)
continue
self
.
send_json
({
'message'
:
'
\r\n
'
})
try
:
logger
.
debug
(
'Task log path: {}'
.
format
(
log_path
))
task_log_f
=
open
(
log_path
,
'rb'
)
break
except
OSError
:
return
if
not
task_log_f
:
return
task_end_mark
=
[]
while
not
self
.
disconnected
:
data
=
task_log_f
.
read
(
4096
)
if
data
:
data
=
data
.
replace
(
b
'
\n
'
,
b
'
\r\n
'
)
self
.
send_json
({
'message'
:
data
.
decode
(
errors
=
'ignore'
),
'task'
:
task_id
})
if
data
.
find
(
b
'succeeded in'
)
!=
-
1
:
task_end_mark
.
append
(
1
)
if
data
.
find
(
bytes
(
task_id
,
'utf8'
))
!=
-
1
:
task_end_mark
.
append
(
1
)
if
len
(
task_end_mark
)
==
2
:
logger
.
debug
(
'Task log end: {}'
.
format
(
task_id
))
break
time
.
sleep
(
0.1
)
task_log_f
.
close
()
thread
=
threading
.
Thread
(
target
=
func
)
thread
.
start
()
thread
.
start
()
def
disconnect
(
self
,
close_code
):
def
disconnect
(
self
,
close_code
):
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a 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