Примеры¶
На этой странице приведены базовые примеры использования QTasks. Они помогут быстро освоить основные сценарии работы с задачами.
Простой пример задачи (синхронно)¶
Задача принимает строку, выводит её в консоль и возвращает обратно.
from qtasks import QueueTasks
app = QueueTasks()
@app.task(name="print_text")
def print_text(text: str):
print(text)
return text
if __name__ == "__main__":
app.run_forever()
# Добавление задачи в очередь
app.add_task("print_text", "Привет, мир!")
# Результат: "Привет, мир!"
При обращении к задаче через саму функцию (task_func) параметр task_name можно
указать явно, если нужно переопределить имя:
print_text.add_task("Привет, мир!") # task_name = "print_text"
print_text.add_task(task_name="echo_text") # task_name = "echo_text"
Асинхронная задача¶
Асинхронная задача, имитирующая задержку и возвращающая результат.
import asyncio
from qtasks.asyncio import QueueTasks
app = QueueTasks()
@app.task(name="async_task")
async def async_task(text: str):
await asyncio.sleep(2)
print(f"Задача завершена: {text}")
return text
if __name__ == "__main__":
app.run_forever()
# Добавление асинхронной задачи
asyncio.run(app.add_task("async_task", "Асинхронный пример"))
# Результат: "Задача завершена: Асинхронный пример"
Использование Redis (брокер по умолчанию)¶
По умолчанию QTasks использует Redis. Можно явно указать URL:
from qtasks import QueueTasks
app = QueueTasks(broker_url="redis://localhost:6379/0")
@app.task(name="redis_example")
def redis_example(value: int):
print(f"Значение: {value}")
return value
if __name__ == "__main__":
app.run_forever()
app.add_task("redis_example", 42)
# Результат: "Значение: 42"
Использование RabbitMQ в качестве брокера¶
Пример настройки RabbitMQ:
pip install qtasks[rabbitmq]
import asyncio
from qtasks.asyncio import QueueTasks
from qtasks.brokers import AsyncRabbitMQBroker
broker = AsyncRabbitMQBroker(url="amqp://guest:guest@localhost/")
app = QueueTasks(broker=broker)
@app.task(name="rabbitmq_example")
async def rabbitmq_example(text: str):
print(f"Получено сообщение: {text}")
return text
if __name__ == "__main__":
app.run_forever()
asyncio.run(app.add_task("rabbitmq_example", "Сообщение через RabbitMQ"))
# Результат: "Получено сообщение: Сообщение через RabbitMQ"
Что посмотреть дальше¶
Дополнительные примеры доступны в отдельных разделах:
- Задачи и их возможности — см. раздел:
[Возможности задач](features.md) - Плагины — см. раздел:
[Как писать плагины](plugins.md) - Интеграции — см. раздел:
[Интеграция QTasks](integrations/index.md) - Аналитика и статистика — см. раздел:
[Аналитика](analytics.md)