Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
cubicweb
cubes
celerytask
Commits
7dc535706ae4
Commit
2ccdac88
authored
Apr 27, 2021
by
Elouan Martinet
Browse files
[celerytask] Add support for fetching and deleting logs in CloudWatch and S3
parent
658444ceb863
Pipeline
#52482
passed with stages
in 2 minutes and 43 seconds
Changes
2
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
cubicweb_celerytask/entities.py
View file @
7dc53570
...
...
@@ -27,7 +27,16 @@ from cubicweb.view import EntityAdapter
from
cubicweb.predicates
import
is_instance
from
cubicweb.server.hook
import
DataOperationMixIn
,
Operation
from
cw_celerytask_helpers.filelogger
import
get_task_logs
from
cw_celerytask_helpers
import
filelogger
# CloudWatch and S3 dependencies are optional
try
:
from
cw_celerytask_helpers
import
cloudwatchlogger
except
ImportError
:
cloudwatchlogger
=
None
try
:
from
cw_celerytask_helpers
import
s3logger
except
ImportError
:
s3logger
=
None
from
cubicweb_celerytask
import
STATES
,
FINAL_STATES
...
...
@@ -193,7 +202,12 @@ class ICeleryTask(EntityAdapter):
@
property
def
logs
(
self
):
return
get_task_logs
(
self
.
task_id
)
or
b
''
for
logger
in
[
cloudwatchlogger
,
s3logger
,
filelogger
]:
if
logger
:
logs
=
logger
.
get_task_logs
(
self
.
task_id
)
if
logs
:
return
logs
return
b
''
@
property
def
result
(
self
):
...
...
cubicweb_celerytask/hooks.py
View file @
7dc53570
...
...
@@ -28,7 +28,16 @@ from cubicweb import ConfigurationError
from
cubicweb.predicates
import
is_instance
from
cubicweb.server.hook
import
Hook
,
DataOperationMixIn
,
Operation
from
cw_celerytask_helpers.filelogger
import
flush_task_logs
from
cw_celerytask_helpers
import
filelogger
# CloudWatch and S3 dependencies are optional
try
:
from
cw_celerytask_helpers
import
cloudwatchlogger
except
ImportError
:
cloudwatchlogger
=
None
try
:
from
cw_celerytask_helpers
import
s3logger
except
ImportError
:
s3logger
=
None
class
DeleteCeleryTaskOp
(
DataOperationMixIn
,
Operation
):
...
...
@@ -39,7 +48,12 @@ class DeleteCeleryTaskOp(DataOperationMixIn, Operation):
celery
.
task
.
control
.
revoke
(
list
(
tasks
),
terminate
=
True
,
signal
=
'SIGKILL'
)
for
task_id
in
tasks
:
flush_task_logs
(
task_id
)
for
logger
in
[
filelogger
,
cloudwatchlogger
,
s3logger
]:
if
logger
:
try
:
logger
.
flush_task_logs
(
task_id
)
except
Exception
:
pass
class
CeleryTaskDeletedHook
(
Hook
):
...
...
Write
Preview
Supports
Markdown
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