【问题标题】:How to get celery to work with SCL python and systemd?如何让 celery 与 SCL python 和 systemd 一起工作?
【发布时间】:2018-12-24 17:49:47
【问题描述】:

我有一个使用 celery 执行后台任务的 Python 应用程序。我使用的是 SCL 提供的 Python 解释器。

我能够为应用程序创建一个 systemd 单元文件:How to use user's pipenv via systemd? Python is installed via SCL

但我不明白如何为 celery 放置一个类似的 sytstemd 单元文件。

我试过了:

[Unit]
Description=app celery service

# Requirements
Requires=network.target

# Dependency ordering
After=network.target

[Service]
# Let processes take awhile to start up
TimeoutStartSec=0
Type=forking

RestartSec=10
Restart=always

Environment="APP_SITE_SETTINGS=/home/app/.config/settings.cfg"
Environment="PYTHONPATH=/home/app/.local/lib/python3.6/site-packages"
WorkingDirectory=/home/app/app-site/app

User=app
Group=app
PermissionsStartOnly=true

KillSignal=SIGQUIT
Type=notify
NotifyAccess=all

# Main process
ExecStart=/usr/bin/scl enable rh-python36 -- /home/app/.local/bin/pipenv run celery -A celery_service.celery worker

[Install]
WantedBy=multi-user.target

当我启动 systemd 单元时,在日志中我看到 celery 应用程序启动。几秒钟后,服务失败。

Job for app_celery.service failed because a timeout was exceeded. See "systemctl status app_celery.service" and "journalctl -xe" for details.

这是一篇日记:

Jul 17 07:43:31 some.host.com scl[5181]: worker: Cold shutdown (MainProcess)

我也尝试过使用 Type=oneshot 和 Type=simple。他们都没有工作。我怀疑这与 SCL 有关。

有没有办法让 celery 应用与 SCL 和 systemd 一起工作?

【问题讨论】:

    标签: python celery systemd software-collections


    【解决方案1】:

    Celery 有一个命令行选项 --detach。当您使用 --detach Celery 时,会将工作人员作为后台进程启动。

    这是工作的 systemd 单元文件:

    [Unit]
    Description=app celery service
    
    # Requirements
    Requires=network.target
    
    # Dependency ordering
    After=network.target
    
    [Service]
    # Let processes take awhile to start up
    TimeoutStartSec=0
    Type=simple
    RemainAfterExit=yes
    RestartSec=10
    Restart=always
    Environment="SETTINGS=/home/app/.config/settings.cfg"
    Environment="PYTHONPATH=/home/app/.local/lib/python3.6/site-packages"
    WorkingDirectory=/home/app/app-site/app/
    
    User=app
    Group=app
    PermissionsStartOnly=true
    
    KillSignal=SIGQUIT
    Type=notify
    NotifyAccess=all
    
    LimitMEMLOCK=infinity
    LimitNOFILE=20480
    LimitNPROC=8192
    
    # Main process
    ExecStart=/usr/bin/scl enable rh-python36 -- /home/app/.local/bin/pipenv run celery -A celery_service.celery worker --detach
    
    [Install]
    WantedBy=multi-user.target
    

    【讨论】:

      猜你喜欢
      • 2017-07-27
      • 1970-01-01
      • 2013-04-13
      • 2018-03-31
      • 1970-01-01
      • 2023-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多