mirror of
https://github.com/django-q2/django-q2.git
synced 2026-10-08 07:28:11 +08:00
Merge pull request #478 from fallenhitokiri/sqs-get-queue-before-create
try to get SQS queue before creating it
This commit is contained in:
@@ -1,9 +1,13 @@
|
|||||||
from boto3 import Session
|
from boto3 import Session
|
||||||
|
from botocore.client import ClientError
|
||||||
|
|
||||||
from django_q.brokers import Broker
|
from django_q.brokers import Broker
|
||||||
from django_q.conf import Conf
|
from django_q.conf import Conf
|
||||||
|
|
||||||
|
|
||||||
|
QUEUE_DOES_NOT_EXIST = "AWS.SimpleQueueService.NonExistentQueue"
|
||||||
|
|
||||||
|
|
||||||
class Sqs(Broker):
|
class Sqs(Broker):
|
||||||
def __init__(self, list_key: str = Conf.PREFIX):
|
def __init__(self, list_key: str = Conf.PREFIX):
|
||||||
self.sqs = None
|
self.sqs = None
|
||||||
@@ -67,4 +71,13 @@ class Sqs(Broker):
|
|||||||
|
|
||||||
def get_queue(self):
|
def get_queue(self):
|
||||||
self.sqs = self.connection.resource("sqs")
|
self.sqs = self.connection.resource("sqs")
|
||||||
|
|
||||||
|
try:
|
||||||
|
# try to return an existing queue by name. If the queue does not
|
||||||
|
# exist try to create it.
|
||||||
|
return self.sqs.get_queue_by_name(QueueName=self.list_key)
|
||||||
|
except ClientError as exp:
|
||||||
|
if not exp.response["Error"]["Code"] == QUEUE_DOES_NOT_EXIST:
|
||||||
|
raise exp
|
||||||
|
|
||||||
return self.sqs.create_queue(QueueName=self.list_key)
|
return self.sqs.create_queue(QueueName=self.list_key)
|
||||||
|
|||||||
Reference in New Issue
Block a user