Пример #1
0
def sender(m: Manager, uid: str) -> None:
    with m.open_writer_queue(uid) as q:
        try:
            for i in range(1, 10):
                m = f"SQS message #{i}"
                q.put({"message": m})
                time.sleep(0.1)
        except ClientError as e:
            print("!!", e)
Пример #2
0
def queue() -> Q[str]:
    import atexit

    m = Manager()
    m = m.__enter__()

    def _teardown():
        nonlocal m
        m.__exit__(None, None, None)  # todo: cache exception

    atexit.register(_teardown)

    # todo: skip
    uid = m.generate_uid(
        "https://ap-northeast-1.queue.amazonaws.com/784330574880/minitask_foo.fifo"
    )
    m.spawn(consume, uid=uid)
    q = m.open_writer_queue(uid)

    def _teardown2():
        q.__exit__(None, None, None)  # todo: cache exception

    atexit.register(_teardown2)
    return q.__enter__()
Пример #3
0
def consume(m: Manager, uid: str):
    with m.open_reader_queue(uid) as q:
        for item in q:
            print(os.getpid(), "<-", item)
Пример #4
0
def receiver(m: Manager, uid: str) -> None:
    with m.open_reader_queue(uid) as q:
        for item in q:
            print("<-", item)
Пример #5
0
def run(*, queue_url: str):
    with Manager(Config(MessageAttributeNames=["All"])) as m:
        m.spawn(sender, uid=queue_url)
        m.spawn(receiver, uid=queue_url)