本文介绍了芹菜有效,但带花不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经安装了芹菜,RabitMQ和鲜花.我能够浏览到花港.我有以下简单的工作程序,可以将其附加到celery并从python程序调用:

I have installed celery and RabitMQ and flower. I am able to browse to the flower port. I have the following simple worker that I can attach to celery and call from a python program:

# -*- coding: utf-8 -*-
"""
Created on Sat Dec 12 16:37:33 2015

@author: idf
"""

from celery import Celery

app = Celery('tasks', broker='amqp://guest@localhost//')

@app.task
def add(x, y):
    return x + y

该程序调用它

# -*- coding: utf-8 -*-
"""
Created on Sat Dec 12 16:40:16 2015

@author: idf
"""

from tasks import add

add.delay(36, 5)

我像这样开始做芹菜:

idf@DellInsp:~/Documents/Projects/python3$ celery -A tasks worker --loglevel=info
    [2015-12-12 19:22:46,223: WARNING/MainProcess] /home/idf/anaconda3/lib/python3.5/site-packages/celery/apps/worker.py:161: CDeprecationWarning:
    Starting from version 3.2 Celery will refuse to accept pickle by default.

    The pickle serializer is a security concern as it may give attackers
    the ability to execute any command.  It's important to secure
    your broker from unauthorized access when using pickle, so we think
    that enabling pickle should require a deliberate action and not be
    the default choice.

    If you depend on pickle then you should set a setting to disable this
    warning and to be sure that everything will continue working
    when you upgrade to Celery 3.2::

        CELERY_ACCEPT_CONTENT = ['pickle', 'json', 'msgpack', 'yaml']

    You must only enable the serializers that you will actually use.


      warnings.warn(CDeprecationWarning(W_PICKLE_DEPRECATED))

     -------------- celery@DellInsp v3.1.19 (Cipater)
    ---- **** -----
    --- * ***  * -- Linux-3.19.0-39-lowlatency-x86_64-with-debian-jessie-sid
    -- * - **** ---
    - ** ---------- [config]
    - ** ---------- .> app:         tasks:0x7f61485e61d0
    - ** ---------- .> transport:   amqp://guest:**@localhost:5672//
    - ** ---------- .> results:     disabled
    - *** --- * --- .> concurrency: 4 (prefork)
    -- ******* ----
    --- ***** ----- [queues]
     -------------- .> celery           exchange=celery(direct) key=celery


    [tasks]
      . tasks.add

    [2015-12-12 19:22:46,250: INFO/MainProcess] Connected to amqp://guest:**@127.0.0.1:5672//
    [2015-12-12 19:22:46,267: INFO/MainProcess] mingle: searching for neighbors
    [2015-12-12 19:22:47,275: INFO/MainProcess] mingle: all alone
    [2015-12-12 19:22:47,286: WARNING/MainProcess] celery@DellInsp ready.
    [2015-12-12 19:22:47,288: INFO/MainProcess] Received task: tasks.add[3c0e5317-ac53-465e-a8fd-3e2861e31db6]
    [2015-12-12 19:22:47,289: INFO/MainProcess] Task tasks.add[3c0e5317-ac53-465e-a8fd-3e2861e31db6] succeeded in 0.00045899399992777035s: 41

^C
worker: Hitting Ctrl+C again will terminate all running tasks!

worker: Warm shutdown (MainProcess)

注意41

但是,如果传入flower参数,则在执行调用时没有任何反应.我也没有在flower网站上看到任何任务.

However, if I pass in the flower parameter, nothing happens when I execute the call. I also don't see any tasks on the flower website.

idf@DellInsp:~/Documents/Projects/python3$ celery flower -A tasks worker --loglevel=info
[I 151212 19:23:59 command:113] Visit me at http://localhost:5555
[I 151212 19:23:59 command:115] Broker: amqp://guest:**@localhost:5672//
[I 151212 19:23:59 command:118] Registered tasks:
    ['celery.backend_cleanup',
     'celery.chain',
     'celery.chord',
     'celery.chord_unlock',
     'celery.chunks',
     'celery.group',
     'celery.map',
     'celery.starmap',
     'tasks.add']
[I 151212 19:23:59 mixins:231] Connected to amqp://guest:**@127.0.0.1:5672//
[W 151212 19:24:01 control:44] 'stats' inspect method failed
[W 151212 19:24:01 control:44] 'active_queues' inspect method failed
[W 151212 19:24:01 control:44] 'registered' inspect method failed
[W 151212 19:24:01 control:44] 'scheduled' inspect method failed
[W 151212 19:24:01 control:44] 'active' inspect method failed
[W 151212 19:24:01 control:44] 'reserved' inspect method failed
[W 151212 19:24:01 control:44] 'revoked' inspect method failed
[W 151212 19:24:01 control:44] 'conf' inspect method failed
^Cidf@DellInsp:~/Documents/Projects/python3$

最后,不确定这是一个错误,但是我的花网站没有工作人员标签.

Finally, not sure it is an error, but my flower website does not have a workers Tab.

推荐答案

我不确定我是否理解,但是您是否同时运行花和工人?花不处理任务.您必须同时运行两者,然后Flower才能用作监视工具.

I am not sure I understood, but are you running both flower and the worker together? Flower does not process tasks. You must run both, then Flower can be used as a monitoring tool.

运行芹菜:

celery -A tasks worker --loglevel=info

打开另一个外壳并运行花:

Open another shell and run flower:

celery -A tasks flower --loglevel=info

然后转到 http://localhost:5555 并查看您的工作人员.当然,如果您想看到一些东西,就必须运行一些任务.

Then go to http://localhost:5555 and see your worker. Of course you must run some task if you want to see something.

这篇关于芹菜有效,但带花不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-09 06:40