Skip to main content

Build Status Test Coverage Maintainability Code style: black PyPI version

Logo

async-worker

O projeto tem como objetivo ser um framework para escrever workers assíncronos em python. Por worker entende-se qualquer aplicação que rode por tempo indeterminado e que receba estímulos de várias origens diferentes. Essas orignes podem ser:

  • Uma mensagem em um broker, como RabbitMQ;
  • Um evento recorrente gerado em um intervalo fixo de tempo;
  • Uma requisição HTTP
  • ...

Documentação: https://async-worker.github.io/async-worker/

Exemplos rápidos

Abaixo estão alguns exemplos bem simples que dão uma ideia do projeto e de como fica um código escrito com async-worker.

Handler HTTP

from aiohttp import web

from asyncworker import App

app = App()


@app.http.get(["/", "/other"])
async def handler():
    return web.json_response({})


app.run()

Esse handler recebe reqisições HTTP (GET) nos seguintes endereços (por padrão): http://127.0.0.1:8080/ e http://127.0.0.1:8080/other

Handler RabbitMQ

from typing import List

from asyncworker import App
from asyncworker.connections import AMQPConnection
from asyncworker.options import Options
from asyncworker.rabbitmq import RabbitMQMessage, AMQPRouteOptions

amqp_conn = AMQPConnection(
    hostname="127.0.0.1",
    username="guest",
    password="guest",
    prefetch_count=1024,
)

app = App(connections=[amqp_conn])


@app.amqp.consume(
    ["queue", "queue-2"], options=AMQPRouteOptions(bulk_size=512)
)
async def handler(messages: List[RabbitMQMessage]):
    print(f"Received {len(messages)} messages")
    for m in messages:
        await amqp_conn.put(
            data=m.body, exchange="other", routing_key="another-routing-key"
        )


@app.run_every(1)
async def produce(app: App):
    await amqp_conn.put(data={"msg": "ok"}, routing_key="queue")


app.run()

Esse handler recebe mensagens das filas queue e queue-2 em lotes de 512 mensagens. Se essas duas filas demorarem mais de 60 segundos para acumular, juntas, 1024 mensagens o handler será chamado imediatamente com a quantidade de mensagens que estiver disponível no momento.

O que esse handler está fazendo é apenas pegar todas as mensagens que ele recebe e enviar para o exchange="", routing_key="queue".


Logo created with DesignEvo logo maker

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

async-worker-0.20.2.tar.gz (36.6 kB view details)

Uploaded Source

File details

Details for the file async-worker-0.20.2.tar.gz.

File metadata

  • Download URL: async-worker-0.20.2.tar.gz
  • Upload date:
  • Size: 36.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for async-worker-0.20.2.tar.gz
Algorithm Hash digest
SHA256 7790124701b6ecda09559a4d6a3246f039fa244efdc2abcad109eef526da62d7
MD5 75be36b9ee594f52037943f0ad473d64
BLAKE2b-256 a57fa0be3884c5707776e0a9303b81c2b2ce3b88510b14d56c775ccd5dbf4815

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.20.2 This release

1 file

0.20.1

1 file

0.20.0

1 file

0.19.2

1 file

0.19.1

1 file

0.19.0

1 file

0.18.0

1 file

0.17.0

1 file

0.16.0

1 file

0.15.2

1 file

0.15.1

2 files

0.15.0

1 file

0.14.1

1 file

0.14.0

1 file

0.13.0

1 file

0.12.1

1 file

0.12.0

1 file

0.11.5

1 file

0.11.4

1 file

0.11.3

1 file

0.11.2

1 file

0.11.1

1 file

0.11.0

1 file

0.10.1

1 file

0.10.0

1 file

0.9.0rc2

1 file

0.9.0rc1

1 file

0.8.0

1 file

0.7.0

1 file

0.7.0rc4

1 file

0.7.0rc3

1 file

0.7.0rc1

1 file

0.6.2

1 file

0.6.1

1 file

0.6.0

1 file

0.6.0rc2

1 file

0.6.0rc1

1 file

0.5.0

1 file

0.4.0rc1

1 file

0.3.0

1 file

0.2.1rc2

1 file

0.2.1rc1

1 file

0.2.0

1 file

0.2.0rc1

1 file

0.1.0rc4

1 file

0.1.0rc3

1 file

0.1.0rc2

1 file

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page