Python RabbitMQ或Redis使用Django 2.0爆炸芹菜队列

Python RabbitMQ或Redis使用Django 2.0爆炸芹菜队列,python,django,redis,rabbitmq,celery,Python,Django,Redis,Rabbitmq,Celery,我遇到了芹菜和Django 2的问题。我有两个运行环境: 生产:=>无问题 amqp==2.2.2 django==1.11.6 芹菜==4.1.0 django芹菜节拍==1.0.1 django芹菜监视器==1.1.2 kombu==4.1.0 redis==2.10.6 发展:=>当前问题 amqp==2.2.2 django==2.0.3 芹菜==4.1.0 django芹菜节拍==1.1.1 django芹菜监视器==1.1.2 kombu==4.1.0 redis==2.10

我遇到了芹菜和Django 2的问题。我有两个运行环境:

  • 生产:=>无问题

    • amqp==2.2.2
    • django==1.11.6
    • 芹菜==4.1.0
    • django芹菜节拍==1.0.1
    • django芹菜监视器==1.1.2
    • kombu==4.1.0
    • redis==2.10.6
  • 发展:=>当前问题

    • amqp==2.2.2
    • django==2.0.3
    • 芹菜==4.1.0
    • django芹菜节拍==1.1.1
    • django芹菜监视器==1.1.2
    • kombu==4.1.0
    • redis==2.10.6
应尽快将生产环境迁移到Django 2.0。 然而,我不能不用芹菜来解决这个问题。我的开发环境是在升级生产服务器之前确保一切正常运行

问题
  • Django 2发生了什么变化,使得系统在Django 1.11中是稳定的,在队列大小爆炸时是不稳定的,在RabbitMQ和Redis中也有同样的效果

  • 如果没有使用任何任务,Redis/RabbitMQ如何自动删除该任务

  • 芹菜工人启动如下 两种环境使用完全相同的命令

    celery beat -A application --loglevel=info --detach 
    celery events -A application --loglevel=info --camera=django_celery_monitor.camera.Camera --frequency=2.0 --detach
    celery worker -A application -l info --events
    
    应用程序设置 自从我将我的开发环境迁移到Django 2以来,我的RabbitMQ队列或Redis队列的大小基本上呈爆炸式增长,我的数据库实例也在不断扩展。任务似乎不再从队列中删除

    几天后,我不得不手动清理芹菜队列,该队列包含25000个任务。看起来TTL设置为“-1”,但是我不知道如何从django设置它

    几个小时后,我有超过220k的任务等待处理和增长。

    我使用以下设置:在文件中可用

    警告:芹菜的名称可能不正确,需要重新映射才能正确分配文件的值

    工人日志示例


    一些想法:将“expires”和“timelimit”设置设置为None(见上图)是否正常。

    我想我找到了一个临时解决方案,芹菜库似乎有一些bug。我们必须等待4.2.0的发布

    我建议您看看:

    作为临时bug修复,我建议使用以下提交:,它似乎已经修复了问题:

    git+https://github.com/celery/celery.git@be55de6#egg=celery
    

    这些工作真的被执行了吗?@DanielRoseman,我已经做了大量的检查,是的,任务似乎被消耗掉了。我以前的说法是不正确的。如果可以的话,我已经用工作人员的日志编辑了我的帖子。
    git+https://github.com/celery/celery.git@be55de6#egg=celery