我正在尝试运行一个 Python 脚本,该脚本使连接永久打开,并响应在脚本之外所做的更改。
例如:
- 数据脚本:接受表单帖子并将表单数据提交到数据库
- Worker 脚本:监控数据库中的新表单帖子并采取相应措施
worker 脚本中的相关代码为:
import pymysql
conn = pymysql.connect(host='127.0.0.1', port=3306, user='dbuser', passwd='dbpass', db='my_db')
def processForms(Formdat):
c = conn.cursor(pymysql.cursors.DictCursor)
myform.sendEmail(c)
conn.commit()
c.close()
def doForms():
while True:
... get data and store in 'myforms' ...
futures = [executor.submit(processForms, myform) for myform in myforms]
time.sleep(30)
doForms()
现在我不明白为什么这没有拾取新表单...如果我在 doForms() 的每次迭代中创建一个新连接,则会拾取新表单,但我不想创建和破坏连接每时每刻。
例如,此修改有效:
conn = None
def doForms():
while True:
global conn
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='', db='mw_py')
... get data and store in 'myforms' ...
futures = [executor.submit(processForms, myform) for myform in myforms]
conn.close()
time.sleep(30)
有没有办法让我使用开放连接并让它轮询最新数据?