如何解决使用 Schedule Python 包时 Psycopg2 更新未运行
我使用 schedule 在 Python 中运行一些作业,其中一个作业调用如下函数:
def read_one_minute_values():
for item in items:
if item.read_interval == '1 minute':
item.read_value(...)
postgres.set_trigger('run_minute_calculations')
我通常使用 schedule 包来安排它:
schedule.every(1).minute.do(read_one_minute_items)
while 1:
schedule.run_pending()
time.sleep(0.1)
最后一行是对处理我的 Postgres 读写的类的调用,如下所示:
def set_trigger(self,trigger_name):
sql = "UPDATE triggers SET trigger_value = %s WHERE trigger_name = %s"
self.postgres_cursor.execute(sql,(1,trigger_name))
self.postgres_connection.commit()
return 1
这只是更新 triggers 表中的一个字段。当我在本地运行它时,我没有问题并且它会正常更新,但是我将我的程序 dockerize 并将其托管在远程服务器上的容器上。与 Postgres 数据库的连接工作正常,我可以正常读取/更新/写入值。但是,当我运行此函数时,它给了我以下错误:
Traceback (most recent call last):
File "./main.py",line 101,in <module>
schedule.run_pending()
File "/usr/local/lib/python3.6/dist-packages/schedule/__init__.py",line 592,in run_pending
default_scheduler.run_pending()
File "/usr/local/lib/python3.6/dist-packages/schedule/__init__.py",line 94,in run_pending
self._run_job(job)
File "/usr/local/lib/python3.6/dist-packages/schedule/__init__.py",line 147,in _run_job
ret = job.run()
File "/usr/local/lib/python3.6/dist-packages/schedule/__init__.py",line 491,in run
ret = self.job_func()
File "./main.py",line 82,in read_one_minute_tags
postgres.set_trigger('run_minute_calculations')
File "/app/PostgresDB.py",line 176,in set_trigger
self.postgres_cursor.execute(sql,trigger_name))
psycopg2.errors.InFailedSqlTransaction: current transaction is aborted,commands ignored until end of transaction block
为什么在安排它时这不起作用?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。