【发布时间】:2018-02-22 04:56:51
【问题描述】:
我对 django、celery 和 rabbitmq 有疑问。
我使用 celery 向 FCM 设备发送消息,但问题是 celery 不会运行该 FCM 命令来发送消息,直到我重新启动 celery 服务器。
当我重新启动 celery 时,再试一次,还是一样,每次操作后我都需要重新启动它。
示例代码:
from __future__ import absolute_import, unicode_literals
from celery import shared_task
# firebase cloud messaging
from fcm.utils import get_device_model
Device = get_device_model()
@shared_task
def send_firebase_message(json, **kwargs):
response = Device.send_msg(json, **kwargs)
return response
这是简单的代码,所以 Device.send_msg 在我重新启动 celery 服务器之前不会触发。
所以,芹菜在我重新启动之前不会执行此任务。可能是rabbitmq问题?
有人对此有任何解决方案吗?可能是什么问题?
【问题讨论】:
-
听起来您每次使用后都需要清洁 Celery。试试这样的:$celery purge
-
但是,如果我需要为每个动作都这样做,那就不好了?
-
怀疑。我在所有项目中都调用垃圾收集。特别是当我使用组件时。否则,事情会卡在 RAM 中,造成内存泄漏,或者像您的情况一样,阻塞进程。即使这不是问题,它也是一个很好的做法
标签: python django rabbitmq celery django-celery