芹菜工人虽然没有工作,但是rabbitmq有队列建立

时间:2015-06-14 15:11:22

标签: python python-2.7 rabbitmq celery digital-ocean

我正在接触芹菜,我按照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天内解决这个问题,但我无法解决这个问题。

2 个答案:

答案 0 :(得分:4)

错误消息几乎告诉您在这种情况下发生了什么。你试图以root身份运行worker(由于安全问题,这通常是个坏主意)。如果要覆盖它并允许它运行,则必须设置环境:

export C_FORCE_ROOT="true"

然后运行工人。

或者您可以将其作为其他用户运行,这是首选。您可以搜索如何添加用户。然后,您只需以该用户或su身份登录并执行您的工作人员。

自从您标记了这个数字海洋以来,这里有一个指向如何添加用户的教程的链接:

https://www.digitalocean.com/community/tutorials/how-to-add-and-delete-users-on-ubuntu-12-04-and-centos-6

此外,芹菜有一些关于如何守护你的工人的文件。我通常使用supervisord方法。

https://celery.readthedocs.org/en/latest/tutorials/daemonizing.html#centos

答案 1 :(得分:2)

不要以root身份运行芹菜工人。

我建议使用supervisord来管理芹菜工作者 - 您可以使用user配置指令指定运行芹菜工作者的用户。