芹菜工人不工作虽然 rabbitmq 有队列建立
celery worker not working though rabbitmq has queue buildup
我正在接触芹菜,我通过关注Tutorial写了一个任务,但不知何故工作人员没有起床,我得到了关注日志
输入命令后:
celery worker -A tasks -l debug
我得到一个日志:
Running a worker with superuser privileges when the
worker accepts messages serialized with pickle is a very bad idea!
If you really want to continue then you have to set the C_FORCE_ROOT
environment variable (but please think about this before you do).
User information: uid=0 euid=0 gid=0 egid=0
这是我的任务:
from celery import Celery
app = Celery('tasks', backend='amqp',broker='amqp://sanjay:**@localhost:5672//')
@app.task
def gen_prime(x):
multiples = []
results = []
for i in xrange(2, x+1):
if i not in multiples:
results.append(i)
for j in xrange(i*i, x+1, i):
multiples.append(j)
return results
虽然在 rabbitmq 管理控制台中,当我尝试在 ipython 控制台中生成质数时,我看到一些队列建立,但我没有在控制台上返回结果。
这是我的控制台操作:
>>> from tasks import gen_prime
>>> pr=gen_prime.delay(10000)
>>> pr.ready()
False
>>>
>>> pr.ready()
False
>>> pr.ready()
False
我试图解决过去 3 天的这个问题,但我无法解决它。
错误消息几乎可以告诉您在这种情况下发生了什么。您正在尝试 运行 工作人员作为 root 用户(出于安全考虑,这通常是个坏主意)。如果你想覆盖它并允许它 运行,你必须设置你的环境:
export C_FORCE_ROOT="true"
然后运行工人。
或者您可以 运行 作为其他用户,这是首选。您可以搜索如何添加用户。然后您只需以该用户身份登录或 su 并执行您的工作程序。
既然你标记了这个数字海洋,这里有一个 link 到他们关于如何添加用户的教程:
另外,celery 有一些关于如何守护你的工人的文档。我一般用supervisord的方式。
https://celery.readthedocs.org/en/latest/tutorials/daemonizing.html#centos
不要运行 celery worker 作为 root。
我建议使用 supervisord 来管理 celery workers - 您可以使用 user
配置指令来指定 运行 celery workers 作为哪个用户。
我正在接触芹菜,我通过关注Tutorial写了一个任务,但不知何故工作人员没有起床,我得到了关注日志 输入命令后:
celery worker -A tasks -l debug
我得到一个日志:
Running a worker with superuser privileges when the
worker accepts messages serialized with pickle is a very bad idea!
If you really want to continue then you have to set the C_FORCE_ROOT
environment variable (but please think about this before you do).
User information: uid=0 euid=0 gid=0 egid=0
这是我的任务:
from celery import Celery
app = Celery('tasks', backend='amqp',broker='amqp://sanjay:**@localhost:5672//')
@app.task
def gen_prime(x):
multiples = []
results = []
for i in xrange(2, x+1):
if i not in multiples:
results.append(i)
for j in xrange(i*i, x+1, i):
multiples.append(j)
return results
虽然在 rabbitmq 管理控制台中,当我尝试在 ipython 控制台中生成质数时,我看到一些队列建立,但我没有在控制台上返回结果。
这是我的控制台操作:
>>> from tasks import gen_prime
>>> pr=gen_prime.delay(10000)
>>> pr.ready()
False
>>>
>>> pr.ready()
False
>>> pr.ready()
False
我试图解决过去 3 天的这个问题,但我无法解决它。
错误消息几乎可以告诉您在这种情况下发生了什么。您正在尝试 运行 工作人员作为 root 用户(出于安全考虑,这通常是个坏主意)。如果你想覆盖它并允许它 运行,你必须设置你的环境:
export C_FORCE_ROOT="true"
然后运行工人。
或者您可以 运行 作为其他用户,这是首选。您可以搜索如何添加用户。然后您只需以该用户身份登录或 su 并执行您的工作程序。
既然你标记了这个数字海洋,这里有一个 link 到他们关于如何添加用户的教程:
另外,celery 有一些关于如何守护你的工人的文档。我一般用supervisord的方式。
https://celery.readthedocs.org/en/latest/tutorials/daemonizing.html#centos
不要运行 celery worker 作为 root。
我建议使用 supervisord 来管理 celery workers - 您可以使用 user
配置指令来指定 运行 celery workers 作为哪个用户。