将使用flask获取的变量作为脚本

时间:2016-04-16 15:28:29

标签: python flask

我有一个python设置,其中一个方法连续返回扫描的RFID芯片的ID。现在我剪断了电源线,将扫描仪连接到wifi微控制器(ESP8266)。每次扫描芯片时,都会发出包含芯片ID的GET请求。

我把烧瓶部分放在一个简单的脚本中。我不需要任何东西返回ESP8266。我想只有一个或多个函数只返回收集的值。我可以将值打印到stdout,它也出现在烧瓶的日志输出中,但这并没有真正帮助。如何将uid传递给另一个脚本,我缺少什么?

有问题的剧本:

from flask import Flask

app = Flask(__name__)

@app.route('/urlpath/<uid>')
def rfiduid(uid):
    print uid

if __name__ == '__main__':
    app.run(host='0.0.0.0', debug=False)

1 个答案:

答案 0 :(得分:0)

您只需要导入另一个并直接从路线中调用它。

from flask import Flask

# A module which contains the stuff you're trying to do
from myothermodule import processRFID

app = Flask(__name__)

@app.route('/urlpath/<uid>')
def rfiduid(uid):
    # Pass the UID to your other module here
    processRFID(uid)

if __name__ == '__main__':
    app.run(host='0.0.0.0', debug=False)

如果你的其他代码是字面上一个脚本(从命令行接受输入参数),我建议你修改它,使它包含一个你可以从flask应用程序调用的函数。否则,您将需要使用os.system调用或其他东西来执行带参数的其他脚本。由于您将未经过清理的用户输入(通过网址)传递到您的系统,因此非常不鼓励

@app.route('/urlpath/<uid>')
def rfiduid(uid):
    os.system(' '.join(['script.py', uid]))

如果将UID作为'1 && really_bad_system_command'

传递,则可以利用此功能