gpt4 book ai didi

python - Celery 任务方法没有被调用

转载 作者:行者123 更新时间:2023-11-30 22:17:40 24 4
gpt4 key购买 nike

我在 Python Django Web 应用程序中有以下方法调用和特定方法。 (请注意,我对 python、Django 或 celery 不太熟悉)

方法如下:

@shared_task(bind=True, default_retry_delay=10, max_retries=3, ignore_results=False)
def push_sns_message(self, sns_alias, message, target_arn):
"""
Celery task
"""
logger.debug("########## Hit the Celery Task ###############")
print "########## Hit the celery ###########"
connection = sns_connections[sns_alias]
return connection.publish(message=message, target_arn=target_arn)

方法调用如下:

print "########## Calling to celery ###########"
push_sns_message.s(self.sns_connection, json.dumps(wrapper[0]), self.sns_arn)

问题是每当我运行应用程序时,它都会到达push_sns_message.s(),但不会进入其中。我可以看到打印内容

"########## Calling to celery ###########"

但是看不到下面的打印,并且其他行也没有被调用

"########## Hit the celery ###########"

请解释此行为。

最佳答案

如果其他答案没有帮助,我有一些可能的建议。

首先,你有 celery 工作线程在运行吗?如果没有,任务将排队,但不会执行,直到工作人员准备好接收任务。您可以简单地调用该函数(不带 .s),并且该函数应作为常规函数执行。

其次,“.s”是一个签名,但如果没有“apply_async”,实际上不会被调用。尝试像这样调用该函数:

push_sns_message.s(self.sns_connection, json.dumps(wrapper[0]), self.sns_arn).apply_async()

或者像这样:

push_sns_message.s(self.sns_connection, json.dumps(wrapper[0]), self.sns_arn).delay()

希望这会有所帮助,但这是 documentation您需要进一步调查该问题。

关于python - Celery 任务方法没有被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49574020/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com