我有一个充当 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')
该脚本的功能是向连接到本地网络的设备发送一些数据。当我打开 Web 浏览器并在 url 栏上输入以下内容时,它可以完美运行:
http://localhost:8080/webhook
我想在服务器上托管脚本,例如。赫鲁库。在这种情况下如何访问本地设备?
注意:我知道我可以在本地机器上运行脚本并使用 ngrok 使其在互联网上可见,但我希望即使在我的计算机关闭时也能访问它。另外,想要一个固定的链接,每次运行时 ngrok 给出的链接都会改变。
我之前在物联网方面遇到过类似的问题。不幸的是,没有简单的方法可以让设备在线可见。这是我使用的一个简单的解决方案。它可能不是最好的,但它有效。
如果您可以访问本地 WiFi 路由器,则可以设置称为 DDNS(动态域名系统)的内容。然后,您的路由器将连接到诸如no-ip (www.noip.com) 之类的 DDNS 服务提供商,并且它将在互联网上可见。您可以提供一个自定义 URL,如susmit-home.noip.com
.
但是susmit-home.noip.com
现在将仅指向您的 WiFi 路由器,而不指向您的 WiFi 网络。因此,如果您想访问本地device_ip
,device_port
例如“192.168.1.75”、9050。那么您可以在路由器上为该本地 IP 端口组合设置端口转发。通常设置如下所示:
device_ip
例如192.168.1.75)device_port
例如 9050)any_port
例如 9050)确保您device_ip
是 WiFi 路由器上的静态 IP,这样它就不会改变。
最后在你的代码中,你可以ip = ('192.168.1.75', 9050)
用ip = ('susmit-home.noip.com', 9050)
.
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句