芹菜守护进程-如何配置它从多个Flask应用程序运行多个任务?

芹菜守护进程-如何配置它从多个Flask应用程序运行多个任务?,flask,rabbitmq,celery,daemon,Flask,Rabbitmq,Celery,Daemon,我有一个flask应用程序myapp\u a,它使用芹菜来运行一些异步任务。我已经将芹菜配置为作为守护进程运行。这是服务脚本 /etc/default/芹菜: # Name of nodes to start CELERYD_NODES="w1" # Absolute or relative path to the 'celery' command: CELERY_BIN="/var/www/myapp_A.com/public_html/venv/bin/celery" # App ins

我有一个flask应用程序
myapp\u a
,它使用芹菜来运行一些异步任务。我已经将芹菜配置为作为守护进程运行。这是服务脚本

/etc/default/芹菜:

# Name of nodes to start
CELERYD_NODES="w1"

# Absolute or relative path to the 'celery' command:
CELERY_BIN="/var/www/myapp_A.com/public_html/venv/bin/celery"

# App instance to use
CELERY_APP="myapp_A.celery"

# Where to chdir at start.
CELERYD_CHDIR="/var/www/myapp_A.com/public_html/"

# Extra command-line arguments to the worker
CELERYD_OPTS="--time-limit=300 --concurrency=8"

# %n will be replaced with the first part of the nodename.
CELERYD_LOG_FILE="/var/log/celery/%n%I.log"
CELERYD_PID_FILE="/var/run/celery/%n.pid"
CELERYD_LOG_LEVEL="INFO"

# Workers should run as an unprivileged user.
CELERYD_USER="myuser"
CELERYD_GROUP="www-data"

# If enabled pid and log directories will be created if missing,
# and owned by the userid/group configured.
CELERY_CREATE_DIRS=1
/etc/init.d/celeryd:

# Name of nodes to start
CELERYD_NODES="w1"

# Absolute or relative path to the 'celery' command:
CELERY_BIN="/var/www/myapp_A.com/public_html/venv/bin/celery"

# App instance to use
CELERY_APP="myapp_A.celery"

# Where to chdir at start.
CELERYD_CHDIR="/var/www/myapp_A.com/public_html/"

# Extra command-line arguments to the worker
CELERYD_OPTS="--time-limit=300 --concurrency=8"

# %n will be replaced with the first part of the nodename.
CELERYD_LOG_FILE="/var/log/celery/%n%I.log"
CELERYD_PID_FILE="/var/run/celery/%n.pid"
CELERYD_LOG_LEVEL="INFO"

# Workers should run as an unprivileged user.
CELERYD_USER="myuser"
CELERYD_GROUP="www-data"

# If enabled pid and log directories will be created if missing,
# and owned by the userid/group configured.
CELERY_CREATE_DIRS=1
芹菜是来自美国的普通芹菜


现在我有了另一个Flask应用程序
myapp_B
,它也需要芹菜来运行任务

  • 我应该如何对此进行配置
  • 我应该用不同的名称创建另一个守护进程吗
  • 我应该如何为多个芹菜进程配置MessageBroker(RabbitMQ)

您可以使用一个守护进程来处理这两个应用程序。 一种方法是为不同的应用程序使用不同的队列名称 这是我正在使用的配置

celery worker -A init_celery --quiet --loglevel=$WORKER_LOG_LEVEL --concurrency=4 --queues=que1,que2
然后在每个应用程序中指定队列名称。使用

CELERY_DEFAULT_QUEUE = 'que1'

您可以使用单个守护进程来处理这两个应用程序。 一种方法是为不同的应用程序使用不同的队列名称 这是我正在使用的配置

celery worker -A init_celery --quiet --loglevel=$WORKER_LOG_LEVEL --concurrency=4 --queues=que1,que2
然后在每个应用程序中指定队列名称。使用

CELERY_DEFAULT_QUEUE = 'que1'

谢谢那么我应该为
CELERY\u-BIN
CELERY\u-APP
CELERYD\u-CHDIR
配置什么呢。我应该将这些配置移动到相应的应用程序中吗?如果是,我应该如何将这些变量传递给守护程序脚本?下面的官方文档中有一个很好的例子。如果你遇到麻烦,请发邮件到这里。嗨,我读过文档了。我不明白的是,当你将芹菜安装在两个
venv
s中时,你如何定义芹菜?当我有两个应用程序时,我应该在哪里配置芹菜应用程序?当芹菜被两个应用程序使用时,我应该在哪个目录下启动芹菜?一个具体的方法是使用
CELERYD\u nodes=“worker1 worker2 worker3”启动多个节点
然后使用
CELERYD_OPTS=“--time limit=300-c8-c:worker2 4-c:worker3 2-Ofair:worker1”为这些工作人员指定选项
您可以通过将节点名称附加到参数来配置特定于节点的设置:如果我想得很清楚,您可以使用
芹菜工人--help
找到所有选项
芹菜桶
路径可以使用工人的
--可执行文件
选项-A指定芹菜应用--workdir指定芹菜d\u chdir谢谢。那么我应该为
CELERY\u-BIN
CELERY\u-APP
CELERYD\u-CHDIR
配置什么呢。我应该将这些配置移动到相应的应用程序中吗?如果是,我应该如何将这些变量传递给守护程序脚本?下面的官方文档中有一个很好的例子。如果你遇到麻烦,请发邮件到这里。嗨,我读过文档了。我不明白的是,当你将芹菜安装在两个
venv
s中时,你如何定义芹菜?当我有两个应用程序时,我应该在哪里配置芹菜应用程序?当芹菜被两个应用程序使用时,我应该在哪个目录下启动芹菜?一个具体的方法是使用
CELERYD\u nodes=“worker1 worker2 worker3”启动多个节点
然后使用
CELERYD_OPTS=“--time limit=300-c8-c:worker2 4-c:worker3 2-Ofair:worker1”为这些工作人员指定选项
您可以通过将节点名称附加到参数来配置特定于节点的设置:如果我想得很清楚,您可以使用
芹菜工人--help
找到所有选项
芹菜桶
路径可以使用
--executable
工人选项-A指定芹菜应用--workdir指定芹菜d\u CHDIR