在 Django 中使用多处理时,应用程序尚未加载,出现异常

2024-05-03

我正在做一个 Django 项目并尝试提高后端的计算速度。

该任务类似于 CPU 限制的转换过程

这是我的环境

  • Python 3.6.1
  • 姜戈 1.10
  • PostgreSQL 9.6

当我尝试通过 python 多处理库并行计算 API 时,我遇到了以下错误。

  File "D:\\project\apps\converter\models\convert_manager.py", line 1, in <module>
    from apps.conversion.models import Conversion
  File "D:\\project\apps\conversion\models.py", line 5, in <module>
    class Conversion(models.Model):
  File "C:\\virtenv\lib\site-packages\django\db\models\base.py", line 105, in __new__
    app_config = apps.get_containing_app_config(module)
  File "C:\\virtenv\ib\site-packages\django\apps\registry.py", line 237, in get_containing_app_config
    self.check_apps_ready()
  File "C:\\lib\site-packages\django\apps\registry.py", line 124, in check_apps_ready
    raise AppRegistryNotReady("Apps aren't loaded yet.")

看起来像每个过程导入转换模型 和转换模型就像

from django.db import models


    Conversion(model.Model):

       conversion_name = models.CharField(max_length=63)
       conversion_user = models.CharField(max_length=31)
       conversion_description = models.TextField(blank=True)
       ...

下面是我想要并行的示例函数,每次迭代都是独立的,但会访问数据或将数据插入到 SQL 中。

Class ConversionJob():
     ...

    def run(self, p_list):
        list_merge_result = []
        for p in p_list:
            list_result = self.Couputing_api(p)
            list_merge_result.extend(list_result)

我想做的是

from multiprocessing import Pool


 Class ConversionJob():
         ...
        def run(self, p_list):
            list_merge_result = []

            p = Pool(process=4)
            list_result = p.map(self.couputing_api, p_list)
            list_merge_result.extend(list_result)

在computing_api()中,它会尝试获取当前已完成的转换信息,并在调用此api之前将其保存到SQL中,但这导致了错误。

我的问题是

  • 为什么导入转换模型会导致应用程序尚未加载错误,我谷歌了很多文章但没有真正解决我的问题。
  • 我可以看到生成的每个进程 SpawnPoolWorker-x 并尝试再次启动 django 服务器(为什么?),每个工作线程都会因相同的错误而停止。

  • 计算API会尝试访问sql,我还没有想好如何处理这个工作。 (共享数据库连接或在每个进程中创建新连接)


对于将来可能会偶然发现这一点的其他人:

如果您在运行 Python 3.8 并尝试使用多处理包时遇到此问题,很可能是因为子处理是“生成”而不是“分叉”。这是 Mac OS 上 Python 3.8 的一项更改,其中默认进程启动方法从“fork”更改为“spawn”。 这是一个已知问题 https://code.djangoproject.com/ticket/31169与姜戈。

为了解决这个问题:

import multiprocessing as mp
mp.set_start_method('fork')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Django 中使用多处理时,应用程序尚未加载,出现异常 的相关文章

  • Django Rest框架Json解析

    我想解析传入的POSTdjangoviews py 文件中的数据 发布数据 number 17386372 data banana apple grapes 这是我尝试读取上述传入数据的方法request views py class Fr
  • 使用缓存时计算“页面浏览量”或“点击量”

    我有一个叫做show board 在其中 除其他外 我增加了一个字段Board views每次运行时加 1 以计算页面浏览量 问题是当我在该视图上使用 cache page 装饰器时 Board views仅在每次生成新的缓存视图时才会增加
  • Jquery 和 Django 多个复选框

    我是 jquery 的初学者 所以请耐心等待 我有一个 jquery 函数 允许我选择多个复选框并创建一个字符串 如下所示 function getSelectedVals var tmp input name checks each fu
  • 在 macOS 中通过 Python 访问进程的压缩 RAM(顶部的 CMPRS)的方法?

    我试图弄清楚如何从 Python 访问任何给定进程占用的实际 RAM 量 我发现 psutil Process PID memory info rss 工作得很好 直到操作系统决定开始压缩某些进程的 RAM 然后 所有的 memory in
  • django-admin.py makemessages 不起作用

    我正在尝试翻译一个字符串 load i18n trans Well Hello there how are you to Hola amigo que tal 我的 settings py 文件有这样的内容 LOCALE PATHS os
  • 我应该在什么模型中添加ManyToManyField?

    我读了有关多对多关系的文档 https docs djangoproject com en dev ref models fields ref manytomany和examples https docs djangoproject com
  • 为什么我的打印功能(在多处理中)不打印任何内容?

    为什么我的打印函数 在 python 多进程中 不打印任何内容 from multiprocessing import Process Queue import os time random def write q print Proces
  • Django 营业时间

    我想添加诊所的营业时间 我已经对此进行了调查在 Django 中实现 开放时间 的任何现有解决方案 https stackoverflow com questions 8128143 any existing solution to imp
  • TemplateSyntaxError:“settings_tags”不是有效的标签库

    当我尝试运行此测试用例时 出现此错误 这是在我的 django 应用程序的tests py 中编写的 def test accounts register self self url http royalflag com pk accoun
  • 在 ubuntu 中卸载 python 模块

    我必须删除一个名为 django 的 python 模块 一种流行的模块 因为我安装了错误的版本 1 3 py 2 6 中的 beta 如何卸载这个模块 请解释一下 因为我只在 Windows 中使用过 python 而从未在 Ubuntu
  • 配置 Django 和 Google 云存储?

    I am not使用应用引擎 我有一个在虚拟机上运行的普通 Django 应用程序 我想使用 Google Cloud Storage 来提供静态文件 以及上传 提供媒体文件 我有一个水桶 如何将 Django 应用程序链接到我的存储桶 我
  • 在一个视图中使用两个模板

    我尝试以两种方式呈现视图中的内容 html 和 csv 下载 我能够做到这一点的唯一方法是使用两种不同的视图 一种用于 html 演示 一种用于 csv 这重复了我的代码 我正在寻找更优雅的解决方案 有什么建议么 这是示例代码 views
  • python:日志记录:我们可以向记录器添加多个过滤器吗?考虑哪一个

    我试图了解 Python 日志记录中的多个过滤器 一个在配置中定义 另一个在代码中定义 如何工作 我正在开发一个 Django 项目 下面是我在 settings py 中的记录器配置 我的目标是switch on and switch o
  • Pinax:自定义注册和个人资料

    我想在用户注册时收集更多信息 并将其显示为个人资料信息的一部分 以便用户在创建登录后可以对其进行编辑 如何在不直接更改 pinax 代码的情况下扩展注册和个人资料表单和模型 来自 松树docs http pinaxproject com d
  • 将 Django +1.10 与 MongoDB 连接

    在过去的几个月里 有人为 MongoDB 更换了 Django 1 10 中的默认数据库引擎吗 我在谷歌上得到的所有信息都是六四年前的 最常见的结果包括mongodb 引擎这需要Django nonrel 来自 Django 1 5 的一个
  • 使用 pip3 安装 mysqlclient 时遇到问题

    我正在尝试使用 Django 设置 python 3 6 环境 安装说明说我应该安装 mysqlclient 才能连接到 mySQL 我明白了 dennis django sudo H pip3 install mysqlclient Co
  • Django 1.6 的静态文件

    我花了一整天但没有任何作用 我在这里看到了至少 20 篇关于同一主题的帖子 它们各不相同 有不同的建议 但没有一个对我有用 使用 Python 2 7 运行 Django 1 6 我正在尝试从 django 教程加载民意调查应用程序的 cs
  • AIOHTTP - Application.make_handler(...) 已弃用 - 添加多重处理

    我经历了 我可以从 Python Web 服务器中获得多少性能 的旅程 这让我想到了 AIOHTTP 和 uvloop 尽管如此 我仍然可以看到 AIOHTTP 并未充分利用我的 CPU 潜力 我开始将多处理与 AIOHTTP 结合使用 我
  • Django - 具有自动完成功能的 Javascript 动态内联 FormSet

    我正在尝试制作一种能够附加参与者的调度程序事件编辑器 Models class Session models Model start time models DateTimeField end time models DateTimeFie
  • Django:如何测试“HttpResponsePermanentRedirect”

    我正在为我的 django 应用程序编写一些测试 在我看来 它使用 HttpResponseRedirect 重定向到其他一些网址 那么我该如何测试呢 姜戈TestCase类有一个方法assertRedirects https docs d

随机推荐