芹菜任务方法未被调用



我有以下方法调用&Python Django Web应用程序中的特定方法。(请注意,我对Python,Django或芹菜并不那么熟悉(

方法如下:

@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((,但不会进入它。我可以看到打印

" ##########

,但看不到以下印刷品,其他线也不称为

" ##########

请解释此行为。

我在其他答案无济于事的情况下有一些潜在的建议。

首先,您是否让芹菜工人跑步?如果不是这样,任务将排队,但直到工人准备接收任务后才执行。您可以简单地调用该函数(无需.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()

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

日志将显示在芹菜的工作日志中,而不是django的标准日志

如果要调试,它具有 @ rdb的外观http://docs.celeryproject.org/en/latest/reference/celery.contrib.rdb.html#usage

相关内容

  • 没有找到相关文章

最新更新