Observed since 21 Oct, 11:42 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
aiocarrot
Asynchronous framework for working with RabbitMQ
aiocarrot is a fully asynchronous framework for working with the RabbitMQ message broker
Source Code: https://github.com/d3nbr0/aiocarrot
The key features are:
The following dependencies are required for aiocarrot to work:
Create and activate virtual environment and then install aiocarrot:
pip install aiocarrot
Create a file main.py with:
from aiocarrot import Carrot, Consumer
import asyncio
consumer = Consumer()
@consumer.message(name='multiply')
async def multiply(first_number: int, second_number: int) -> None:
print('Result is:', first_number * second_number)
async def main() -> None:
carrot = Carrot(url='amqp://guest:guest@127.0.0.1/', queue_name='sample')
carrot.setup_consumer(consumer)
await carrot.run()
if __name__ == '__main__':
asyncio.run(main())
Then run it with:
python main.py
Now you have created a consumer with the ability to receive a "multiply" task
If you want to send a message, use this:
from aiocarrot import Carrot
import asyncio
async def main() -> None:
carrot = Carrot(url='amqp://guest:guest@127.0.0.1:5672/', queue_name='sample')
await carrot.send('multiply', first_number=10, second_number=20)
if __name__ == '__main__':
asyncio.run(main())
You can use the scheduler to run your tasks automatically.
You can schedule a task using the cron format. For example, to run a task once every 15 minutes: */15 * * * *
@consumer.message(name='example.scheduler', schedule='*/15 * * * *')
async def scheduler_message(value: Optional[int] = None) -> None:
print('Your value is:', value or 0)
NOTE: The scheduler does not support working with arguments that do not have default values. If you want to schedule a message and it has arguments, make sure they all have a default value.
You can find more examples here
It's very simple to use. Enjoy!
Download counts and popularity will appear here as the collector receives them.
| Package / target | Requirement | Relationship |
|---|---|---|
aio-pikaEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | aio-pika<9.5,>=9.4.3 | runtime |
croniterEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | croniter>=6.0.0 | runtime |
loguruEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | loguru<0.8.0,>=0.7.2 | runtime |
pydanticEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | pydantic<3.0.0,>=2.9.2 | runtime |
ujsonEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | ujson>=5.10.0 | runtime |
pytest-asyncioEnvironment{
"extras": "",
"marker": "extra == \"test\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | pytest-asyncio~=0.24.0; extra == "test" | runtime |
pytestEnvironment{
"extras": "",
"marker": "extra == \"test\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | pytest~=8.3.3; extra == "test" | runtime |
bdist_wheel · 11.05 KB · Python py3
sdist · 10.46 KB · Python source
Observed since 21 Oct, 11:42 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package_version:630de6f4a4d2ace6ac790b27ffe1d19d1d8ffd9f75e56bb140cda70ebdddcbf7