• python使用cx_Oracle在Linux和Windows下的一点差异


    1. 主要是线程方面的差异。

    Windows下,把cx_Oracle.connect(connectedId)得到的handle传给定时器线程,主线程和和定时器可以用同一个handle。

    但Linux不能这么做。必须把船歌定时器的线程的handle,另外生成。定时器是结束后,再新启一个线程。定时器相关的这些线程可以用同一个handle,但不能和主线程用同一个。

    估计可能是不能同一个时间,对Oracle来说,两个不同的进程用同一个handle来连接。真实原因,现在不清楚。下面粘贴部分代码

    def consult_task(stageDict, lock, span, db):
        if not TimerRun:
            return
        # consulted = settlePack.pack_stage_consult_completed(SettleDay)
        completed, failed = settleDB.consult_finished_task(db, span, SettleDay)
        for i, elapse in completed:
            set_mul_status(i, stageDict, lock, 'completed', elapse)
        for i, elapse in failed:
            set_mul_status(i, stageDict, lock, 'failed', elapse)
        timer = threading.Timer(span, consult_task, args=(stageDict, lock, span, db) )
        timer.start()
    
    def period_consult_task(stageDict, lock, span, connectedId):
        if IsLinux:
            db = settleDB.get_db_handle(connectedId)
        else:
            db = DBpart
        timer = threading.Timer(span, consult_task, args=(stageDict, lock, span, db))
        timer.start()
  • 相关阅读:
    【SQL跟踪工具】SQL Profiler 跟踪器
    使用Fiddler调试手机端页面请求/抓包
    SQL 常用判断语句
    VS中常用快捷键
    博客园博客自动生成目录/目录索引
    BZOJ 1135 P3488 LYZ-Ice Skates 线段树+Hall
    BZOJ 4823 老C的方块
    POJ
    BZOJ 1299 [LLH邀请赛]巧克力棒
    BZOJ 2437 [Noi2011]兔兔与蛋蛋
  • 原文地址:https://www.cnblogs.com/tangxiaosheng/p/6856630.html
Copyright © 2020-2023  润新知