|
8 | 8 |
|
9 | 9 | import asyncio |
10 | 10 |
|
11 | | -import boto3 |
12 | 11 | import dotenv |
| 12 | +from aiobotocore.session import get_session |
13 | 13 |
|
14 | 14 | from taskiq_sqs import S3Bucket, S3ResultBackend, SQSBroker |
15 | 15 |
|
16 | 16 |
|
17 | 17 | dotenv.load_dotenv() |
18 | 18 |
|
19 | 19 | QUEUE_NAME = "my-queue" |
20 | | -QUEUE_URL = f"http://localhost:4566/000000000000/{QUEUE_NAME}" |
21 | | - |
22 | | - |
23 | | -boto3.client("sqs").create_queue(QueueName=QUEUE_NAME) |
24 | | - |
25 | | -broker = SQSBroker(QUEUE_URL, sqs_region_override="us-east-1").with_result_backend( |
26 | | - S3ResultBackend(bucket=S3Bucket(name="response-bucket")) |
| 20 | +ENDPOINT_URL = "http://localhost:4566" |
| 21 | +AWS_REGION = "us-east-1" |
| 22 | + |
| 23 | + |
| 24 | +broker = SQSBroker( |
| 25 | + queue_name=QUEUE_NAME, |
| 26 | + endpoint_url=ENDPOINT_URL, |
| 27 | + aws_region_name=AWS_REGION, |
| 28 | +).with_result_backend( |
| 29 | + S3ResultBackend( |
| 30 | + bucket=S3Bucket(name="response-bucket"), |
| 31 | + endpoint_url=ENDPOINT_URL, |
| 32 | + aws_region_name=AWS_REGION, |
| 33 | + ), |
27 | 34 | ) |
28 | 35 |
|
29 | 36 |
|
30 | 37 | @broker.task() |
31 | 38 | async def i_love_aws() -> None: |
32 | 39 | """I hope my cloud bill doesn't get too high!""" |
33 | | - await asyncio.sleep(5.5) |
| 40 | + await asyncio.sleep(2) |
34 | 41 | print("Hello there!") |
35 | 42 |
|
36 | 43 |
|
| 44 | +async def ensure_queue_exists() -> None: |
| 45 | + session = get_session() |
| 46 | + async with session.create_client( |
| 47 | + "sqs", |
| 48 | + region_name=AWS_REGION, |
| 49 | + endpoint_url=ENDPOINT_URL, |
| 50 | + ) as sqs: |
| 51 | + await sqs.create_queue(QueueName=QUEUE_NAME) |
| 52 | + |
| 53 | + |
37 | 54 | async def main() -> None: |
| 55 | + await ensure_queue_exists() |
38 | 56 | await broker.startup() |
39 | 57 | task = await i_love_aws.kiq() |
40 | 58 | print(await task.wait_result()) |
|
0 commit comments