执行工人特定代码



我有以下项目:https://github.com/gonvaled/celery-test

我想拥有一些仅在工人中执行的代码,但我不知道该怎么做。

这是运行的工人:

pegasus $ celery worker --app=proj
This should only be executed in the worker
 -------------- celery@pegasus v3.0.9 (Chiastic Slide)
---- **** ----- 
--- * ***  * -- [Configuration]
-- * - **** --- . broker:      amqp://guest@localhost:5672//
- ** ---------- . app:         tasks:0x98d188c
- ** ---------- . concurrency: 2 (processes)
- ** ---------- . events:      OFF (enable -E to monitor this worker)
- ** ---------- 
- *** --- * --- [Queues]
-- ******* ---- . celery:      exchange:celery(direct) binding:celery
--- ***** ----- 
[2012-12-22 17:50:31,868: WARNING/MainProcess] celery@pegasus has started.

这是运行的客户端:

$ python client.py 
This should only be executed in the worker
8

客户不应打印This should only be executed in the worker。显然,我需要以某种方式保护该代码的那部分,但我不知道如何。如何确保仅在工人中运行某些代码?

我的解决方案基于一个全局变量,在模块gd.py(全局数据)中,我在导入客户端时进行了实例导入。

这是我的客户端代码:

import gd
gd.CLIENT_ACTIVE = True
# import worker here
....

在我的工人中,我确实:

import gd
if not getattr(gd, 'CLIENT_ACTIVE', None)
    # worker specific code here

相关内容

  • 没有找到相关文章

最新更新