【问题标题】:Django freeze after launch celery .delay. how to fix?启动 celery .delay 后 Django 冻结。怎么修?
【发布时间】:2020-12-08 16:12:06
【问题描述】:

运行简单的任务打印字符串,它冻结总没有任何错误,一切都安装了。

celery 启动,redis 工作,当它运行延迟 celery 应用程序时没有打印。

但在 django runserver 中打印一次“2,2”

芹菜.py

from __future__ import absolute_import
import os

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'src.settings.local')
    
from django.conf import settings
from celery import Celery

app = Celery('src')
    
app.config_from_object('django.conf:settings')
    
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
    
@app.task(bind=True)
def debug_task(self):
    print("Request: {0!r}".format(self.request))

我的任务.py

import os
import datetime
from celery import Celery
from celery import shared_task
@shared_task
def testfunc():
    print('EKHASGBDJHGASd')
    return False

我在视图中启动该功能

testfunc.delay()

Celery worker 找到了所有的任务,但是当启动一些任务时,所有的任务都卡住了,没有任何错误,celery worker 很安静。

【问题讨论】:

    标签: django celery


    【解决方案1】:

    我有同样的问题,也许我的解决方案也适合你。我发现我的问题出在我的项目settings.py 中。首先确保您在settings.py 中正确定义了 celery 变量:

    CELERY_BROKER_URL = 'amqp://{}:{}@{}'.format(
        CELERY_BROKER_USER,
        CELERY_BROKER_PASS,
        CELERY_BORKER_HOST
    )
    

    如果这个变量(CELERY_BROKER_URL)定义正确,那么我认为你的问题是你的CELERY_BORKER_HOST,如果你以错误的方式定义它(例如:CELERY_BROKER_HOST = "localhost:5673/" 而不是CELERY_BROKER_HOST = "localhost:5672/"for rabbitmq)那么无论何时你打电话.delay() 它会冻结。

    【讨论】:

    • 不,我用 totur 设置一切,我使用 redis。
    猜你喜欢
    • 2021-12-20
    • 2020-12-14
    • 2020-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-04
    • 2021-10-15
    相关资源
    最近更新 更多