Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用rabbitmq作为消息代理和后端_Python_Redis_Rabbitmq_Celery_Message Queue - Fatal编程技术网

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

Python 使用rabbitmq作为消息代理和后端,python,redis,rabbitmq,celery,message-queue,Python,Redis,Rabbitmq,Celery,Message Queue,我一直在使用芹菜并阅读有关MessageBroker和后端的rabbitmqvsredis。我想使用rabbitmq后端,因为它听起来更能保证数据不会丢失 我问了这个问题(),关于mnesia文件夹中用随机GUID填充的rabbitmq队列。另一位用户向我指出了类似的问题()。他们提到我不应该使用rabbitmq作为后端,而应该使用消息代理 我希望整合我的堆栈,并且只对MessageBroker和后端使用rabbitmq。有没有办法防止队列慢慢填满,最终由于内存过载而导致应用程序死机 使用芹菜\

我一直在使用
芹菜
并阅读有关MessageBroker和后端的
rabbitmq
vs
redis
。我想使用
rabbitmq
后端,因为它听起来更能保证数据不会丢失

我问了这个问题(),关于
mnesia
文件夹中用随机GUID填充的
rabbitmq
队列。另一位用户向我指出了类似的问题()。他们提到我不应该使用
rabbitmq
作为后端,而应该使用消息代理

我希望整合我的堆栈,并且只对MessageBroker和后端使用
rabbitmq
。有没有办法防止队列慢慢填满,最终由于内存过载而导致应用程序死机

使用
芹菜\u AMQP\u任务\u结果\u过期
似乎无法解决问题

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

@app.task
def call_plc(sitename, ip_address):
    vals = pc.PLC_Comm().connect_to(sitename, ip_address)
    return vals
我创建了一组这些任务,并将它们放在一个列表中。一旦
all([t.ready()代表任务列表中的t])
返回
True
,我就继续

另一个任务只发送一封电子邮件:

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

我可能会在将来确认电子邮件已发送,但现在是“发射并忘记”

您能澄清“后端”吗?有哪些任务/职责?
Redis
保存到磁盘(虽然默认情况下频率较低,但您可以将其配置为更频繁地保存,请在此处阅读有关持久性的内容[)。我还决定使用
rabbitmq
作为项目的后端+代理(涉及fire&forget任务),但我很快切换到
Redis
,因为我发现它更容易使用。