django - 启动 celery .delay 后 Django 冻结。怎么修?
问题描述
运行简单的任务来打印字符串,它冻结总没有任何错误,一切都安装好了。
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 是相当的。
解决方案
我有同样的问题,也许我的解决方案也适合你。我发现我的问题出在我的项目settings.py
中。首先确保你在你的 celery 变量中正确定义settings.py
:
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/"
rabbitmq),那么无论何时调用.delay()
它都会冻结。
推荐阅读
- jquery - 当我单击我选择的最后一张图片时,我也提交了 jquery 文件上传
- python - Django IntegrityError NOT Null 约束失败 reqs_student.section_id
- java - Kafka Mirror Maker 执行地点
- ipc - 如何解决 Open VMS Web 服务集成工具包 (WSIT) 中的 IPC 错误
- c++ - c++(我的代码卡在第一个函数中)
- github-api - 我可以通过 GitHub API 添加新的分支保护规则吗?
- c - 串行编程 - Termios。从设备读取 0x00 字节时卡住
- macos - ElasticSearch 5.6 无法在 Mac OS 上启动
- python - 正则表达式 Python - 仅保留 ASCII 和版权符号
- laravel - 使用 Mockery 进行单元测试返回 false