有没有办法以编程方式确定当前模块的导入/运行是在芹菜工人的背景下完成的?
我们已经确定要在运行Celery worker之前设置环境变量,并在代码中检查该环境变量,但是我想知道是否有更好的方法?
小智 5
简单,
import sys
IN_CELERY_WORKER_PROCESS = sys.argv and sys.argv[0].endswith('celery')\
and 'worker' in sys.argv
if IN_CELERY_WORKER_PROCESS:
print ('Im in Celery worker')
Run Code Online (Sandbox Code Playgroud)
http://percentl.com/blog/django-how-can-i-detect-whether-im-running-celery-worker/
添加环境变量是检查模块是否由 celery Worker 运行的好方法。在任务提交者进程中,我们可以设置环境变量,以标记它不是在 celery 工作线程的上下文中运行。
但更好的方法可能是使用一些 celery 信号,这可能有助于了解模块是否在工作程序或任务提交程序中运行。例如,worker-process-init信号被发送到每个子任务执行器进程(在预分叉模式下),并且处理程序可用于设置一些全局变量,指示它是一个工作进程。
| 归档时间: |
|
| 查看次数: |
2849 次 |
| 最近记录: |