Статус исчезает при обновлении во время работы скриптов (чтение и запись одновременно не происходит)
Во время работы этого скрипта, если какой-либо продукт помечен как критический, то он не обновляется, а сбрасывается обратно на некритический
Итак, как выполнять операции чтения и записи одновременно?
def get_latest_comment_from_xsite( curs, how_far_back ): print "start app get latest comment after %0.2f seconds" % ( time.time() - start )
># minutes_back = 24*60
print "Going back %0.2f minutes" % (how_far_back)
sql = """
WITH ORDERED AS
(
SELECT
eh.equipmentname,
to_date(eh.time,'YYYYMMDD HH24MISS\"000\"') AS \"TIME\",
NVL(eh.workordernumber,eh.workrequestnumber ) AS \"WORKORDERNUMBER\",
eh.username,
DBMS_LOB.SUBSTR(ec.detaildescription,1700,1) AS \"COMMENTTEXT\",
ROW_NUMBER() OVER (PARTITION BY eh.equipmentname ORDER BY eh.equipmentname ASC) AS rn
FROM FwEqpHistory eh,
FwEqpComment ec
WHERE
ec.sysId (+) = eh.eqpComment
AND ec.detaildescription NOT LIKE 'Marked as critical%'
AND ec.detaildescription NOT LIKE 'Removed from critical%'
AND eh.time > TO_CHAR(sysdate - {0}*((1.0/24.0)/60.0),'YYYYMMDD HH24MISS')||'000'
ORDER BY
1, 2 desc)
SELECT * FROM ORDERED WHERE rn = 1""".format(how_far_back)
print sql
curs.execute(str(sql))
comments = curs.fetchall()
print "Collected app Data after %0.2f seconds" % ( time.time() - start )
for row in comments:
tool_id, comment_time, wo_number, user_id, comment_text, row_num = row
print tool_id + ' ' + str( comment_time) + ' ' + user_id + ' ' + comment_text
try:
status = CurrentStatus.objects.get(table_name = tool_id)
if ( status.title_updated_at == None or status.title_updated_at < comment_time ):
status.title_updated_at = comment_time
if len(comment_text) < 1000:
status.title = comment_text
else:
status.title = comment_text[0:999]
status.save()
except CurrentStatus.DoesNotExist:
print 'ERROR: Tool ' + tool_id + ' exists in app ; but not in app'
continue
except DatabaseError as e:
print traceback.format_exc()
except Exception:
print traceback.format_exc()
return comments