芹菜吃我所有的公羊

时间:2014-05-13 10:02:48

标签: python sqlalchemy rabbitmq celery

以下是我想要实现的目标:

  • 我有一个金字塔视图,它将一个相当大的任务task_1放入默认队列
  • task_1执行一些简单的数据库操作,然后将task_2多次添加到默认队列中,并使用不同的参数。
  • task_2实例化数据库中的一些东西

以下是发生的事情:

我的所有公羊都被吃掉了,我的电脑开始疯狂地分页。事实上,键盘不能很好地工作以阻止违规过程。

问题是:我该如何解决这个问题?

以下是我到目前为止所做的一些事情,我正在做的一些假设以及我打算尝试的事情:

我写了一个小脚本来拍摄正在使用内存的快照,因为队列中添加了很多东西 - RabbitMQ玩得很好,而芹菜逐渐增加其占用空间,因此存在问题。

我的信息丰富的芹菜日志显示正在完成的任务,所以它不仅仅是一个任务变得混乱。

据我所知,芹菜在任务完成后根本不会释放内存。我认为这与sqlalchemy有关,因为它有时会做一些有趣的事情。例如,我曾经有一个芹菜任务,通过sqlalchemy将一些东西添加到数据库中,它在一段时间内运行良好但生命结束了。我接受了处理sqlalchemy的代码的一部分并将其粘贴在一个外部脚本中,芹菜任务作为一个自包含的进程启动,我的所有问题都消失了。每次我想在芹菜任务中与数据库进行交互时,这样做的任务就是这样做,尽管如此我更愿意不去那条路。

目前我正在阅读更多关于芹菜的实际工作情况,但我认为如果我定期重新启动芹菜工作者就可以了。我在正确的道路上吗?或者是否有一些简单而明显的东西我不知道?

0 个答案:

没有答案