def fetch_last_recorded_activity_date(l_pgsql_pool, l_pg_conn, l_sql_statement):
"""
:param l_pgsql_pool: Postgres Connection Pool
:param l_pg_conn: Postgres connection object to run various operations
:return:
"""
try:
with l_pg_conn.cursor() as cur: # If connectionPool is being used whilte creating new connection,it
# tries to use existing connection as much as possible. With in connection, you can have multiple cursors
# for various operations
cur.execute(l_sql_statement)
last_recorded_activity_details = cur.fetchone()
return last_recorded_activity_details
except (Exception, psycopg2.Error) as error:
log.error(error)
finally:
if cur is not None:
cur.close()
while True:
doc = {}
sql_statement = """
select max(completed_date) at time zone 'utc' at time zone 'america/Chicago' as LastRecordedDate, timezone('america/Chicago',now()) as TimeofCheck
from adw.activity_fact
where completed_date at time zone 'utc' at time zone 'america/Chicago' between current_date and current_date+1
"""
last_recorded_activity_date, current_date_frm_server = fetch_last_recorded_activity_date(
pgsql_pool, pg_conn,sql_statement)
log.debug(
'Last recorded activity date: {} Servertime when pgsql'
' to fetch last recorded activity date is executed: {}'
.format(last_recorded_activity_date, current_date_frm_server)
)
time.sleep(20)
sql_statement=''
current_date_frm_server = None
Я пытаюсь получить время выполнения запроса с сервера. Для этого я использую timezone('America/Chicago', now())
как TimeofCheck
в операторе SQL.
Я отправляю запрос на Postgres каждые 20 секунд. Пожалуйста, найдите соответствующий код выше. Так или иначе, psycopg2 кеширует результат TimeofCheck и не обновляется вообще. Приведенный выше скрипт генерирует следующие результаты.
01-27 16:40:57 [DEBUG: MainProcess] Дата последней записи активности: 2020-01-27 16: 39: 53.028000 Время сервера при pg sql для извлечения даты последней записанной активности выполнено: 2020-01-27 16: 41: 05.033359
01-27 16:41:18 [DEBUG: MainProcess] Дата последней записанной активности: 2020-01-27 16: 39: 55.385000 Время сервера, когда выполняется pg sql для извлечения последней записанной даты активности: 2020-01-27 16: 41: 05.033359
01-27 16:41:38 [DEBUG: MainProcess] Last дата зарегистрированной активности: 2020-01-27 16: 40: 42.074000 Время сервера, когда выполняется pg sql для извлечения даты последней записанной активности: 2020-01-27 16: 41: 05.033359
01-27 16: 41:59 [DEBUG: MainProcess] Дата последней записанной активности: 2020-01-27 16: 40: 50.706000 Время сервера, когда выполняется pg sql для извлечения даты последней записанной активности: 2020-01-27 16: 41: 05.033359
01-27 16:42:19 [DEBUG: MainProcess] Дата последней записанной активности: 2020-01-27 16: 41: 30.628000 Время сервера при pg * 1 034 * для извлечения даты последней записанной активности выполнено: 2020-01-27 16: 41: 05.033359
01-27 16:42:39 [DEBUG: MainProcess] Дата последней записанной активности: 2020-01-27 16: 41: 30.628000 Серверное время, когда выполняется pg sql для извлечения последней записанной даты активности: 2020-01-27 16: 41: 05.033359
Получает LastRecordedDate
правильно, но каким-то образом TimeOfCheck
возвращает постоянное значение.
Информация о среде
Python 3.6.4 |Anaconda, Inc.| (default, Jan 16 2018, 12:04:33)
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> print(psycopg2.__version__)
2.8.4 (dt dec pq3 ext lo64)