Celery works, but with flower doesn't work

匿名 (未验证) 提交于 2019-12-03 09:05:37

问题:

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  

This program calls it

# -*- coding: utf-8 -*- """ Created on Sat Dec 12 16:40:16 2015  @author: idf """  from tasks import add  add.delay(36, 5)    

I start celery like this:

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) 

Notice the correct output of 41

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.

回答1:

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.

Run celery:

celery -A tasks worker --loglevel=info 

Open another shell and run flower:

celery -A tasks flower --loglevel=info 

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



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!