我在Celery上运行一个工作程序[版本5.1.0(太阳谐波(],如下所示:
celery -A task_scheduler.celery_task worker --loglevel=debug -n ekkis -E
工作人员似乎运行良好,并对请求做出响应。这是部分日志:
[2022-11-06 03:02:15913:DEBUG/MainProcess]| Worker:正在准备引导步骤。[2022-11-06 03:02:15918:DEBUG/MainProcess]| Worker:正在构建图形。。。[2022-11-06 03:02:15919:DEBUG/MainProcess]| Worker:新启动顺序:{StateDB、Beat、Timer、Hub、Pool、Autoscaler、Consumer}[2022-11-06 03:02:15933:DEBUG/MainProcess]|消费者:准备引导步骤。[2022-11-06 03:02:15934:DEBUG/MainProcess]|消费者:构建图形。。。[2022-11-06 03:02:16033:DEBUG/MainProcess]|使用者:新启动顺序:{Connection,Events,Heart,Mingle,Gossip,Tasks,Control,Agent,event loop}[2022-11-06 03:02:16034:INFO/MainProcess]流动性条款任务_时间表-Genesis订阅已开始[2022-11-06 03:02:16046:调试/主进程]http://vault.gitlab-managed-apps.svc.cluster.local:8200";GET/v1/auth/token/lookup self-HTTP/1.1";200 908[2022-11-06 03:02:16100:调试/主进程]http://vault.gitlab-managed-apps.svc.cluster.local:8200";GET/v1/site/data/prod/siteHTTP/1.1";200无[2022-11-06 03:02:16105:调试/主进程]http://vault.gitlab-managed-apps.svc.cluster.local:8200";GET/v1/auth/token/lookup self-HTTP/1.1";200 908[2022-11-06 03:02:16111:DEBUG/MainProcess]http://vault.gitlab-managed-apps.svc.cluster.local:8200";GET/v1/site/data/prod/siteHTTP/1.1";200无
但当我试图获得状态时:
celery -A task_scheduler.celery_task status
它失败了:
错误:在时间限制内没有节点回复
我在谷歌上搜索了很多,有一些宝贵的东西可以帮助我。我们使用Redis(v7.0.5(后端运行Celery。任何关于如何排除故障的帮助,将不胜感激
我希望看到工作节点的列表
附录I
看起来report
有效,我得到了这样的东西:
software -> celery:5.1.0 (sun-harmonics) kombu:5.1.0 py:3.6.15
billiard:3.6.4.0 redis:3.5.3
platform -> system:Linux arch:64bit
kernel version:5.4.188+ imp:CPython
loader -> celery.loaders.app.AppLoader
settings -> transport:redis results:disabled
好吧,我想明白了。我们配置了一个任务:
@celeryd_after_setup.connect()
def configure_task(conf=None, **kwargs):
genesis_subscribe()
由于外国系统的故障,它再也没有回来:
def genesis_subscribe():
try:
from task_scheduler.third_party.backfilling import BackFilling
from task_scheduler.constants import GENESIS
genesis_backfilling = BackFilling.factory(GENESIS)
while True:
if genesis_backfilling.subscribe():
break
else:
time.sleep(90)
logger.info("LIQUIDITY PROVISION TASK_SCHEDULER - Genesis Subscribe FAILURE")
logger.info("LIQUIDITY PROVISION TASK_SCHEDULER - Genesis Subscribe Completed")
except Exception as e:
CommonUtils.basic_exception_logger(e)
logger.error(str(e))
因此,这个实现将无限期地等待失败,我想这意味着工人永远无法开始,因为它只是在等待。一旦该代码被删除,我现在可以从芹菜中获得正确的status