你好,如果我在一个脚本中有一个标志,是否可以将实时更改传递给其他脚本?我的意思是,例如,我写了这个脚本。我们将其命名为script1.py
,它从串行通信中读取数据并将其保存到.txt
文件中。当我收到的data
是'0'
时,我想将flag
sent_json
传递给script2
。因此,当script2
获取触发器时,请发布数据。有什么建议么 ?
while True:
try :
a = ser.readline()
timestamped = str(datetime.datetime.now())
suma = timestamped + "\t " + a.decode('utf-8')
f = open("current_data.txt", 'a')
f.write(suma)
if (a.decode().strip() == '0'):
sent_json = True
saveData()
print("New data is saved!")
sent_json = False
except :
print("Unexpected error: ")
break
我还有另一个脚本,将其命名为script2.py
,其中是主要的Flask
应用程序:
import sqlite3, json
from flask import Flask, render_template, request
from serialNumber_id import serial_number
import sys
app = Flask(__name__)
@app.route("/")
def PostData():
''' Connect to DB, set the temperature to 2 decimal float, POST Data to DB'''
with open("data.json") as dataFile:
data = json.load(dataFile)
for key, value in data.items():
temperature = "{0:.2f}".format(float(value['data']))
date = value['date']
conn = sqlite3.connect('sensordata.db')
cur = conn.cursor()
cur.execute( """INSERT INTO Temperature_data(temperature, currentdat, currenttime, device) VALUES ((?) , (?), time("now"), (?))""", (temperature, date, serial_number))
conn.commit()
open('data.json', 'w').close()
#######
Code something like
while True:
if sent_json :
do something
else:
do something
# if __name__ == "__main__":
# app.run(host='0.0.0.0', port=8181, debug=True)
请注意,我已经尝试过script2
from script1 import sent_json
这些脚本也位于同一文件夹中。
答案 0 :(得分:0)
因此,由于无论如何进行轮询,绝对最简单的方法是写入某种共享资源,例如文件。因此,script1
向文件中写入了一些内容(可能是时间戳),script2
不断轮询该文件以查看其是否已更改。
让我警告您,如果您想要提高性能或效率,就像依赖文件系统的任何内容一样,这是一个糟糕的解决方案。
答案 1 :(得分:0)
为什么不只是将数据发布到flask应用程序,而是尝试将数据从一个脚本传递到另一个脚本?
#script1.py
import requests
my_data = {'name':'FooBar'}
requests.post('http://localhost:3000/', json=data)
#script2.py
from flask import request
...
@app.route("/", methods=["POST"])
def PostData():
data = request.get_json(force=True)
print(data)
# {'name':'FooBar'}
do_something(data)