【发布时间】:2017-12-27 14:21:24
【问题描述】:
我有一个充当 webhook 的 python 脚本。一部分如下:
import json
import os
import urllib
import socket
import _thread
from flask import Flask
from flask import request
from flask import make_response
app=Flask(__name__)
ip = ('192.168.1.75', 9050)
@app.route('/webhook',methods=['GET','POST'])
def webhook():
_thread.start_new_thread(sendDataToDevice,(ip))
req = request.get_json(silent=True,force=True)
print("Request:")
print(json.dumps(req,indent=4))
res=makeWebHookResult(req)
res=json.dumps(res,indent=4)
r=make_response(res)
r.headers['Content-Type']='application/json'
return r
if __name__ == '__main__':
app.run(port=8080,host='localhost')
脚本的功能是向连接到本地网络的设备发送一些数据。 当我打开我的网络浏览器并在 url 栏上输入以下内容时,它可以完美运行:
http://localhost:8080/webhook
我想在服务器上托管脚本,例如。赫罗库。这种情况下如何访问本地设备?
注意:我知道我可以在本地计算机上运行该脚本并使用 ngrok 使其对 Internet 可见,但我希望即使在我的计算机关闭时也可以访问它。另外,想要一个固定的链接,并且 ngrok 给出的链接在每次运行时都会改变。
【问题讨论】:
-
如果我错了,请纠正我。在您的示例中,您有一些设备在本地网络上的
device_ip, device_port = "192.168.1.75", 9050上运行。当您将应用程序托管在远程服务器(例如 Heroku)上时,您想要的是能够获得 device_ip 和 device_port?另外你能告诉我这是什么设备吗?它是计算机、智能手机还是嵌入式系统? -
没错。该设备是一个嵌入式系统,具体来说是一个带有esp8266 WiFi模块的Arduino Uno板。
-
我可以假设您对本地网络上的 WiFi 路由器具有管理员访问权限吗?
-
是的,我有管理员权限。
标签: python networking flask iot