检查我的所有工人是否都在芹菜中上网

时间:2015-10-16 15:43:56

标签: python django asynchronous celery

我有两名工人在跑:

  1. celery -A project worker -Q OneAtTimeQueue -c1 -l Info

  2. celery -A project worker -B -l info

  3. 第一个是让任务一次执行一个任务。这就是为什么它具有一个并发性。

    第二个是针对其他任务,这些任务不需要是一个时间而且是周期性任务的节拍。

    当我使用时:

    celery -A project status
    

    仅显示:

    celery@project: OK
    
    1 node online.
    

    我如何检查两名工人是否在线?

3 个答案:

答案 0 :(得分:1)

Celery Workers Guide建议在单个主机上运行多个worker时使用唯一名称。尝试添加-n参数,然后运行状态:

celery -A project worker -Q OneAtTimeQueue -c1 -l Info -n worker1
celery -A project worker -B -l info -n worker2
celery -A project status

答案 1 :(得分:1)

首先,要在不指定-n的名称的情况下启动工作线节点,您很可能会收到DuplicateNodenameWarning这样的警告:

  

/usr/local/lib/python3.4/site-packages/celery/app/control.py:36:DuplicateNodenameWarning:收到节点名称的多个回复:celery @ hostname。

其次,您可以使用Celery Remote Command Ping检查所有在线工作人员(因为他们将使用pong进行响应),Ping命令将向所有Celery工作节点广播ping并仅报告活动的工作节点,IE

$ celery -A project inspect ping
celery@hostname: OK
        pong
celery@hostname: OK
        pong
/usr/local/lib/python3.4/site-packages/celery/app/control.py:36: DuplicateNodenameWarning: Received multiple replies from node name: celery@hostname.
Please make sure you give each node a unique nodename using the `-n` option.
  pluralize(len(dupes), 'name'), ', '.join(sorted(dupes)),

答案 2 :(得分:0)

嗯,我认为最好是使用:

html { margin: 0; padding: 0; } body { display: block; position: relative; box-sizing: border-box; margin: 1em 0; padding: 0; width: 100%; height: 60px; border-top: 1px solid gray; border-bottom: 1px solid gray; background: #fff; } body:before { content: 'Testing this title'; display: block; position: absolute; top: -1px; right: 25%; bottom: -1px; left: 25%; box-sizing: border-box; font: bold 16px/60px Arial, sans-serif; text-align: center; background: #ccc; }

然后我可以看到两个进程是否都在运行。