Hvordan bruker jeg / opprette en db markøren i min python tråd?

stemmer
0

Jeg får gjeng feil når jeg prøver å bruke eller opprette en db markøren i min PROCESS_ID funksjon. Hver tråd blir nødt til å bruke databasen for å behandle data for deres passert id.

Jeg kan ikke bruke en markør i tråd / PROCESS_ID i det hele tatt (jeg får threading feil og DB aldri oppdateringer) ... Jeg har kodet det mange forskjellige måter. Koden fungerer når jeg ikke bruker tråder.

Jeg har veldig spesifikke krav til hvordan denne koden skal skrives, langsom og stabil er fine. Jeg har også kuttet ut mye av feilbehandling / logging før oppslaget. Nissen / uendelig løkke er nødvendig.

Hvordan kan jeg spinne opp til en ny markør i hver tråd?

import threading
import time
from datetime import datetime
import os
import jaydebeapi, sys

#Enter the values for you database connection
database = REMOVED          
hostname = REMOVED
port = REMOVED               
uid = REMOVED       
pwd = REMOVED 

connection_string='jdbc:db2://'+hostname+':'+port+'/'+database

if (sys.version_info >= (3,0)):
    conn = jaydebeapi.connect(com.ibm.db2.jcc.DB2Driver, connection_string, [uid, pwd], jars=REMOVED)
else:
    conn = jaydebeapi.connect(com.ibm.db2.jcc.DB2Driver, [connection_string, uid, pwd])

# Thread Pool Variables
max_threads = 5
used_threads = 0

# define main cursor
cus=conn.cursor()

def process_id(id):
    #create a cursor for a thread
    cus_id=conn.cursor()
    cus_id.execute(SOME QUERY;)
    cus_id.close()
    global used_threads
    used_threads = used_threads - 1         
    return 0

def daemon():
    global num_threads, used_threads
    print(Daemon running...)
    while True:
        #ids to process are loaded into a list...
        for id in ids_to_process:
            if used_threads < max_threads:
                t = threading.Thread(target=process_id, args=(int(id),))
                t.start()
                used_threads += 1
    return 0

daemon()
Publisert på 19/03/2020 klokken 21:55
kilden bruker
På andre språk...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more