Skip to content
This repository has been archived by the owner on Feb 27, 2021. It is now read-only.

handling an exception during error #34

Open
McMoe89 opened this issue Oct 21, 2020 · 0 comments
Open

handling an exception during error #34

McMoe89 opened this issue Oct 21, 2020 · 0 comments

Comments

@McMoe89
Copy link

McMoe89 commented Oct 21, 2020

Hi i am handling an exception in a background_task. Running the code alone works fine, but when i want to run it as a background_task there is always an error message. It seems that handling an exception is not possible through a background_task. I want to set a status when the background_tasks failed, so i tried it with an exception. In this case i try to load something into a teradata table that does not exist to force an error and handle teh exception.

Here is my Code:

@background(schedule=0)
def forced_load_schedule(id, user):
#Identify user and send message
#user = User.objects.get(pk=user_id)
#user.email_user('Here is a notification', 'You have been notified')
queryconfig = "SELECT * FROM ETL_config"
queryloads = "SELECT * FROM ETL_load WHERE id ='" + str(id) + "'"
teradatahost = '195.233.30.21'
udaExec = teradata.UdaExec (appName="Toolbox2.0_ETL", version="1.0", logConsole=False)
conn = sqlite3.connect('C:/inetpub/wwwroot/db.sqlite3')
conn2 = sqlite3.connect('C:/inetpub/wwwroot/db.sqlite3')

#Get teradata user and etl configuration from SQLite database
df = pd.read_sql_query(queryconfig, conn)

for row in df.iterrows():
	pos, d = row
	teradatauser = d["Teradata_User"]
	teradatapassword = d["Teradata_Password"]
	etltimer = d["ETL_Timer"]
	etlstatus = d["ETL_Status"]
	runningindicator = d["ETL_Running_Indicator"]
	
	
df = pd.read_sql_query(queryloads, conn)

for row in df.iterrows():
	pos, d = row
	loadsql = d["Load_SQL"]
	loadname = d["Name"]
	loadid = d["id"]
	etlgroup = d["ETL_Group"]
	
	#Connect to teradata
	with udaExec.connect(method="odbc",system=teradatahost, username=teradatauser,
						password=teradatapassword, driver="Teradata") as connect:
						now = str(datetime.now())[0:19]
						#Execute load SQL
						try:
							curs = conn.cursor()
							curs.execute("UPDATE ETL_load SET Trigger_Status = '1' WHERE id ='" + str(loadid) + "'")
							conn.commit()
							curs = connect.cursor()
							curs.execute(loadsql)
							curs = conn.cursor()
							curs.execute("UPDATE ETL_load SET Load_Status = '1' WHERE id ='" + str(id) + "'")
							curs.execute("UPDATE ETL_load SET Last_Load = '" + str(datetime.now()) + "' WHERE id ='" + str(id) + "'")
							curs.execute("INSERT INTO log_log (Appname, Log_Title, Log_Message, Timestamp, Username) SELECT 'ETL_process' AS Appname, 'Info' AS Log_Title, 'Loadprocess " + loadname + " from ETL-Group " + etlgroup + " has been forced' AS Log_Message, '" + now + "' AS Timestamp, '" + user + "' AS Username")
							conn.commit()
						except Exception as e:
							curs2 = conn2.cursor()
							curs2.execute("UPDATE ETL_load SET Load_Status = '2' WHERE id ='" + str(id) + "'")
							conn2.commit()

#Set ETL config Status back to 'active'
curs = conn.cursor()
curs.execute("UPDATE ETL_config SET ETL_Status = 'active'")
conn.commit()
conn.close()

My error message is this in the tasks table:
Traceback (most recent call last):
File "C:\inetpub\wwwroot\ETL\tasks.py", line 49, in forced_load_schedule
curs = connect.cursor()
File "C:\Python38-32\lib\site-packages\teradata\udaexec.py", line 745, in execute
self._execute(self.cursor.execute, query, params, **kwargs)
File "C:\Python38-32\lib\site-packages\teradata\udaexec.py", line 790, in _execute
func(query, params, **kwargs)
File "C:\Python38-32\lib\site-packages\teradata\tdodbc.py", line 614, in execute
checkStatus(rc, hStmt=self.hStmt, method="SQLExecDirectW")
File "C:\Python38-32\lib\site-packages\teradata\tdodbc.py", line 231, in checkStatus
raise DatabaseError(i[2], u"[{}] {}".format(i[0], msg), i[0])
teradata.api.DatabaseError: (3807, "[42S02] [Teradata][ODBC Teradata Driver][Teradata Database] Object 'AVU_NL.TASHKKXAIADAD' does not exist. ")

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\Python38-32\lib\site-packages\background_task\tasks.py", line 43, in bg_runner
func(*args, **kwargs)
File "C:\inetpub\wwwroot\ETL\tasks.py", line 60, in forced_load_schedule
sqlite3.OperationalError: near ".": syntax error

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant