首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django ORA-使用多线程时出现03113错误

Django ORA-使用多线程时出现03113错误
EN

Stack Overflow用户
提问于 2020-01-13 22:18:24
回答 1查看 141关注 0票数 1

我有一个系统,基本上是从主进程启动线程,几个参数被传递给这些线程,我需要访问DataBase来获取这些参数。

所以代码基本上是:

代码语言:javascript
复制
from procs import Processor
from multiprocessing import Pool

active = True
while active:
    parameters = Parameters.objects.all()

    processor = Processor()

    django.db.connections.close_all()

    pool = Pool(processes=12)
    pool.starmap(processor.proces, parameters)
    pool.close()
    pool.join()
    pool.terminate()

    active = int(Parameters.objects.get(dsc='is_active').value)

在池结束处理后,当我尝试获取'is_active‘活动参数时,我得到ORA-03113错误。

代码语言:javascript
复制
django.db.utils.OperationalError: ORA-03113: end-of-file on communication channel on connection closing
EN

回答 1

Stack Overflow用户

发布于 2020-01-13 22:18:24

看起来问题是:

代码语言:javascript
复制
django.db.connections.close_all()

通常Django应该能够在需要时重新打开连接,但我不知道为什么没有发生,所以我通过添加以下代码行强制重新连接:

代码语言:javascript
复制
django.db.connections['default'].connect()

最后的代码是:

代码语言:javascript
复制
from procs import Processor
from multiprocessing import Pool

active = True
while active:
    parameters = Parameters.objects.all()

    processor = Processor()

    django.db.connections.close_all()

    pool = Pool(processes=12)
    pool.starmap(processor.proces, parameters)
    pool.close()
    pool.join()
    pool.terminate()

    django.db.connections['default'].connect()
    active = int(Parameters.objects.get(dsc='is_active').value)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59718417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档