芹菜工人不工作虽然rabbitmq有队列建设

riy*_*uja 5 python rabbitmq celery python-2.7 digital-ocean

我正在接触芹菜,我按照教程编写了一个任务,但不知何故工人没有起床,我得到了以下日志输入命令后:

celery worker -A tasks -l debug
Run Code Online (Sandbox Code Playgroud)

我得到一个日志:

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
Run Code Online (Sandbox Code Playgroud)

这是我的任务:

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
Run Code Online (Sandbox Code Playgroud)

虽然在rabbitmq管理控制台中,当我尝试在ipython控制台中生成素数但我没有在控制台上得到结果时,我看到一些队列建立.

这是我的控制台操作:

>>> from tasks import gen_prime
>>> pr=gen_prime.delay(10000)
>>> pr.ready()
False
>>> 
>>> pr.ready()
False
>>> pr.ready()
False
Run Code Online (Sandbox Code Playgroud)

我试图在过去3天内解决这个问题,但我无法解决这个问题.

scy*_*ale 2

不要以 root 身份运行 celery 工人。

我建议使用Supervisord来管理 celery 工作人员 - 您可以使用user配置指令来指定以哪个用户身份运行 celery 工作人员。