Mantén el hilo principal con vida: Ejecución no bloqueante con run_async.
No deberías necesitar una máquina virtual dedicada solo para correr un bot de Telegram junto a tu app en FastAPI. run_consumers(block=False) de wconnect corre en segundo plano sin bloquear tu servidor.
Así se implementa Non-Blocking Async Consumers en entornos reales con wconnect:
import time
from wconnect import Wtelegram, WMessage
bot = Wtelegram()
@bot.on_command(command="ping")
def ping(msg: WMessage):
bot.send(to=msg.chat_id, message="pong 🏓")
# Launch in background thread without blocking main application
thread = bot.run_consumers(block=False)
print(f"Bot listening in daemon thread: {thread.name}")
# Main application continues executing (FastAPI / ETL pipeline / worker)
for step in range(3):
print(f"Main loop executing batch #{step}")
time.sleep(1)
bot.stop_consumers()
Por qué es clave:
- Decoradores sin boilerplate (
@bot.on_command,@bot.on_message,@bot.consumer). - Streaming de archivos binarios directo desde RAM usando
WFile. - Poller daemon no bloqueante con
run_consumers(block=False).
¡Visita el repositorio en GitHub!
Top comments (1)
Desacoplar la recepción de webhooks de la ejecución intensiva de tareas en bots conversacionales es fundamental para evitar pérdidas de eventos por timeout de plataforma.
¿Qué arquitectura de colas o bucles asíncronos les ha ofrecido mejor estabilidad al procesar cargas multimedia concurrentes?