Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
Communications Backbone System
communications-backbone
Commits
cd4ad416
Unverified
Commit
cd4ad416
authored
2 years ago
by
Dan Jones
Browse files
Options
Download
Email Patches
Plain Diff
feat: add endpoint to empty a named queue
parent
0f5e168c
Pipeline
#115150
passed with stages
in 57 seconds
Changes
3
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
35 additions
and
6 deletions
+35
-6
api.py
api.py
+3
-2
endpoints/queues.py
endpoints/queues.py
+21
-4
rmq.py
rmq.py
+11
-0
No files found.
api.py
View file @
cd4ad416
...
...
@@ -10,7 +10,7 @@ from endpoints.notify import Notify
from
endpoints.receive
import
Receive
from
endpoints.send
import
Send
from
endpoints.token
import
Token
from
endpoints.queues
import
QueueList
from
endpoints.queues
import
Queue
,
QueueList
from
models.token_model
import
TokenModel
from
logger
import
setup_logging
...
...
@@ -46,7 +46,8 @@ def create_app():
api
.
add_resource
(
Send
,
"/send"
)
api
.
add_resource
(
Notify
,
"/notify"
)
api
.
add_resource
(
Token
,
"/token"
)
api
.
add_resource
(
QueueList
,
"/queues"
)
api
.
add_resource
(
QueueList
,
"/queue"
)
api
.
add_resource
(
Queue
,
"/queue/<queue_name>"
)
return
app
...
...
This diff is collapsed.
Click to expand it.
endpoints/queues.py
View file @
cd4ad416
from
flask_restful
import
request
from
flask_restful
import
request
,
abort
from
marshmallow
import
Schema
,
fields
from
endpoints.auth_resource
import
AuthResource
from
models.client_model
import
ClientModel
from
rmq
import
get_queue_status
from
rmq
import
get_queue_status
,
empty_queue
class
Queue
(
AuthResource
):
def
get
(
self
,
queue_name
):
allow
=
self
.
auth
(
request
)
if
allow
:
queue_status
=
get_queue_status
(
queue_name
)
return
{
"queue"
:
queue_name
,
"properties"
:
queue_status
}
def
delete
(
self
,
queue_name
):
allow
=
self
.
auth
(
request
)
if
allow
:
emptied
=
empty_queue
(
queue_name
)
queue_status
=
get_queue_status
(
queue_name
)
queue_status
[
"empty"
]
=
emptied
return
{
"queue"
:
queue_name
,
"properties"
:
queue_status
}
class
QueueList
(
AuthResource
):
...
...
@@ -25,8 +42,8 @@ class QueueList(AuthResource):
"client_id"
:
client_id
,
"queue"
:
f
"
{
client_id
}
-
{
queue_type
}
"
,
"type"
:
queue_type
,
"properties"
:
queue_s
ize
,
"properties"
:
queue_s
tatus
,
}
for
client_id
,
client_queues
in
queue_status
.
items
()
for
queue_type
,
queue_s
ize
in
client_queues
.
items
()
for
queue_type
,
queue_s
tatus
in
client_queues
.
items
()
]
This diff is collapsed.
Click to expand it.
rmq.py
View file @
cd4ad416
import
json
import
logging
import
os
import
time
import
pika
...
...
@@ -232,3 +233,13 @@ def get_queue_status(queue_name):
}
logging
.
debug
(
f
"Queue:
{
queue_name
}
contains
{
queue_status
[
'size'
]
}
messages"
)
return
queue_status
def
empty_queue
(
queue_name
):
_
,
channel
=
pika_connect
(
host
=
host
)
emptied
=
True
try
:
channel
.
queue_purge
(
queue_name
)
except
ValueError
:
emptied
=
False
return
emptied
This diff is collapsed.
Click to expand it.
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