Articles of rabbitmq

Apio configurar conexión separada para productor y consumidor.

Tenemos una configuración de aplicación en heroku, que utiliza apio para ejecutar trabajos en segundo plano. La aplicación de apio utiliza RabbitMQ como agente. Usamos el complemento RabbitMQ Bigwig de heroku como agente de mensajes AMQP. Este complemento especifica dos direcciones URL separadas, una optimizada para el productor y otra optimizada para el consumidor. Además, […]

pika, stop_consuming no funciona

Soy nuevo en rabbitmq y pika, y tengo problemas para dejar de consumir. Configuración de canal y cola: connection = pika.BlockingConnection(pika.ConnectionParameters(‘localhost’)) channel = connection.channel() channel.queue_declare(queue=new_task_id, durable=True, auto_delete=True) Básicamente, el consumidor y el productor son así: consumidor: def task(task_id): def callback(channel, method, properties, body): if body != “quit”: print(body) else: print(body) channel.stop_consuming(task_id) channel.basic_consume(callback, queue=task_id, no_ack=True) channel.start_consuming() […]

Ayuda de diseño de apio: cómo evitar la ejecución simultánea de tareas

Soy bastante nuevo en Celery / AMQP y estoy tratando de idear un diseño de tarea / cola / trabajador para cumplir con los siguientes requisitos. Tengo varios tipos de tareas “por usuario”: por ejemplo, TaskA, TaskB, TaskC. Cada una de estas tareas “por usuario” lee / escribe datos para un usuario particular en el […]

Django, RabbitMQ y Celery: ¿por qué Celery ejecuta versiones antiguas de mis tareas después de actualizar mi código Django en desarrollo?

Así que tengo una aplicación Django que ocasionalmente envía una tarea a Celery para su ejecución asíncrona. Descubrí que mientras trabajo en mi código en desarrollo, el servidor de desarrollo de Django sabe cómo detectar automáticamente cuándo ha cambiado el código y luego reiniciar el servidor para que pueda ver mis cambios. Sin embargo, la […]

Eliminar tarea / Tarea periódica en apio

¿Cómo puedo eliminar una tarea regular o una tarea periódica en el apio?

Apio ¿Por qué la tarea se queda en la cola

Así que estoy usando apio con RabbitMQ. Tengo una API RESTful que registra un usuario. Estoy usando el trabajador remoto de Celery para enviar un correo electrónico de registro de forma asíncrona para que mi API pueda devolver una respuesta rápida. from .tasks import send_registration_email def register_user(user_data): # save user to the database etc send_registration_email.delay(user.id) […]

Celery Beat: se limita a la instancia de una sola tarea a la vez

Tengo apio batido y apio (cuatro trabajadores) para hacer algunos pasos de procesamiento a granel. Una de esas tareas es aproximadamente “para cada X que no haya creado una Y, cree una Y”. La tarea se ejecuta periódicamente a una velocidad semi-rápida (10 s). La tarea se completa muy rápidamente. También hay otras tareas en […]

¿Explicación general de cómo funciona epoll?

Estoy haciendo un informe técnico sobre el cambio de un sondeo de base de datos (a través de una llamada de procedimiento almacenado síncrono) a una cola de mensajes (a través de pub / sub). Me gustaría poder explicar cómo el sondeo de una base de datos es muy diferente y mucho más pesado que […]

Enrutamiento basado en contenido con RabbitMQ y Python

¿Es posible con RabbitMQ y Python hacer enrutamiento basado en contenido? El estándar AMQP y RabbitMQ dicen ser compatibles con el enrutamiento basado en contenido, pero ¿hay alguna biblioteca para Python que admita la especificación de enlaces basados ​​en contenido, etc.? La biblioteca que estoy usando actualmente (py-amqplib http://barryp.org/software/py-amqplib/ ) parece que solo admite el […]

¿Cómo hacer un Pika SelectConnection simple para enviar un mensaje, en python?

Estoy tratando de convertir mi código para enviar mensajes de rabbitmq a través de Pika. Estoy teniendo muchos problemas para entender cómo enviar un mensaje simple mediante una conexión asíncrona (como SelectConnection). En mi código anterior, que uso la biblioteca amqp, simplemente declaro una clase como esta: import amqp as amqp class MQ(): mqConn = […]