代码之家  ›  专栏  ›  技术社区  ›  Krish V

Django Cellery WorkerLosterror:工人过早退出:信号9(Sigkill)错误

  •  0
  • Krish V  · 技术社区  · 7 年前

    在生产虚拟环境中运行芹菜作为守护进程的最佳实践是什么?我在工作完善的地方环境中使用以下内容,并按预期接收任务。但在生产中总是坚持

    WorkerLostError: Worker exited prematurely: signal 9 (SIGKILL) error
    

    我在本地和生产中使用以下配置:

    /ETC/默认/庆祝:

    CELERY_BIN="path/to/celery/bin"
    CELERY_APP="myproj"
    CELERYD_CHDIR="home/myuser/project/myproj"
    CELERYD_OPTS="--time-limit=300 --concurrency=4"
    CELERYD_LOG_FILE="/var/log/celery/%n%I.log"
    CELERYD_PID_FILE="/var/run/celery/%n.pid"
    CELERYD_USER="myuser"
    CELERYD_GROUP="myuser"
    CELERY_CREATE_DIRS=1
    

    /etc/init.d/celeryd(等/init.d/celeryd): [ celeryd ]

    程序包版本信息:

    1. Ubuntu==16.04.2
    2. 芹菜==4.1.0
    3. rabbitmq==3.5.7
    4. Django==2.0.1

    我还使用这些命令同时让芹菜作为守护进程运行:

    1. sudo chown-r根:根/var/log/celery/
    2. sudo chown-r根:根/var/run/celery/
    3. sudo更新rc.d celeryd默认值
    4. sudo update rc.d celeryd启用
    5. sudo/etc/init.d/celeryd开始

    这是我的姜戈 设置.py 芹菜配置:

    CELERY_BROKER_URL = 'amqp://localhost'
    CELERY_ACCEPT_CONTENT = ['json']
    CELERY_RESULT_BACKEND = 'db+sqlite:///results.sqlite'
    CELERY_TASK_SERIALIZER = 'json'
    

    需要专家建议使芹菜守护进程在生产虚拟环境中正常工作。事先谢谢!

    3 回复  |  直到 7 年前
        1
  •  0
  •   justcompile    7 年前

    除非您已经为rabbitmq创建了单独的vhost&user,否则请将芹菜经纪人的URL设置为 amqp://guest@localhost//

    此外,您应该设置的所有者而不是根目录 /var/log/celery/ /var/run/celery/ 到“myuser”,正如您在celleryd配置中设置的那样。

        2
  •  0
  •   Krish V    7 年前

    由于内存不足,我得到了这个错误

    /var/log/kern.log(变量/日志/kern.log)

    我有一个TensorFlow运行在我的任务中,它需要额外的计算能力,但是我的物理内存(RAM)不足以处理那么多的负载。我很奇怪除了Sigkill 9错误没有登录芹菜。但是内核日志帮助我修复了它。

        3
  •  0
  •   mrichter    6 年前

    我想这可能是OOM的症状。我在Docker容器中部署了一个芹菜后端-“它在我的机器上工作”,但不在集群中。我为任务分配了更多的RAM,不再有问题。