使用rabbitmq作为消息代理和后端

时间:2015-03-11 17:20:01

标签: python redis rabbitmq celery message-queue

我一直在与Celery合作,并为消息代理和后端阅读rabbitmq vs redis。我想使用rabbitmq后端,因为它听起来更好地保证数据不会丢失。

我问了这个问题(rabbitmq queues filling up with celery tasks),其中rabbitmq队列填满了mnesia文件夹中的随机GUID。另一位用户向我指出了这个类似的问题(Queues with random GUID being generated in RabbitMQ server)。他们提到我不应该使用rabbitmq作为我的后端,只使用消息代理。

我想整合我的堆栈,只使用rabbitmq作为消息代理和后端。有没有办法阻止队列缓慢填满并最终因内存过载而终止应用程序?

使用CELERY_AMQP_TASK_RESULT_EXPIRES似乎无法解决问题。

我想并行运行一些硬件调用。这是Celery的任务:

@app.task
def call_plc(sitename, ip_address):
    vals = pc.PLC_Comm().connect_to(sitename, ip_address)
    return vals

我创建了一堆这些任务并将它们放在一个列表中。 all([t.ready() for t in task_list]返回True后,我继续前进。

另一项任务只是发送电子邮件:

@app.task
def send_asyncalarm(sitename, alarm_list, timestamp):
    my_an = an.Alarm_Notifier()
    my_an.send_alarm(sitename, alarm_list, timestamp)
    return

我可能会在将来确认电子邮件已发送,但现在它已经发送并且忘记"

0 个答案:

没有答案