如何在Ubuntu中将celeryd作为守护进程运行?

3

我正在尝试安装一个init.d脚本来运行celery以进行任务调度。当我尝试通过sudo /etc/init.d/celeryd start启动它时,它会抛出错误"User does not exist: 'celery'"

我的celery配置文件 (/etc/default/celeryd) 包含以下内容:

# Workers should run as an unprivileged user.
CELERYD_USER="celery"
CELERYD_GROUP="celery"

我知道这些是错误的,所以它会抛出错误。

文档中只是这样说:

CELERYD_USER
User to run celeryd as. Default is current user.

关于此事没有更多的内容。 非常感谢您的帮助。


2
你尝试过在Ubuntu上添加celery用户和组吗?或者只需将CELERYD_USER和CELERYD_GROUP选项注释掉,以当前用户身份运行它... - Serafeim
@Serafeim 谢谢。我注释掉了 CELERYD_USERCELERYD_GROUP,现在它可以工作了。不过你知道这些是什么意思吗? - suhailvs
1个回答

5
我正在添加一个适当的答案,以便清晰可见:
Workers 是运行各种 celery 任务的 unix 进程。如文档所述,CELERYD_USER 和 CELERYD_GROUP 确定这些 workers 将在您的 Unix 环境中运行的用户和组名。
因此,最初在您的情况下发生的是,celery 尝试使用不存在于您的系统中的用户名"celery" 来启动 worker。当您注释掉这两个选项时,celery 就会使用发出命令 sudo /etc/init.d/celeryd start 的用户来启动工作进程,在这种情况下是 root(管理员)用户(默认为当前用户)。
然而,出于显而易见的原因,建议将 workers 作为非特权用户而不是以 root 身份运行。因此,我建议实际上通过在此处找到的小教程 http://www.cyberciti.biz/faq/unix-create-user-account/ 添加 celery 用户和组,并取消注释 CELERYD_USER="celery" 和 CELERYD_GROUP="celery" 选项。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接