最近在做一个 Demo:
[硬件 GPS 模块] 采集 GPS 数据发送到 [物联网服务器] , [我的网站] 定时 10 秒向 [物联网服务器] 请求 GPS 数据更新信息。
现在遇到 requests 请求 gps 数据时候阻塞,导致网站卡顿,故想到使用 Python 的多线程解决:
线程 A: 主线程,跑 flask
线程 B:Requests 线程,睡眠 10 秒,唤醒请求 GPS 数据
不考虑使用前端请求,就讨论用 Python 线程解决,如果是嵌入式的话可以这样做:
1. 在线程 A 中创建低优先级的线程 B
1. 有网络请求时执行线程 A,空闲时执行线程 B,这样既不影响用户网页请求,又可以发起 Requests 请求更新 GPS 数据
回到 Flask 和 Python,查了一下 Flask 也有多线程模式,我尝试开启 threaded 选项,并未解决阻塞问题。
查了 Python 3.7 的新特性,asyncio,能否使用 asyncio 解决多线程问题呢?
对 Python 的理解很粗浅,顺便上两个没太理解的链接:
https://hackernoon.com/how-to-run-asynchronous-web-requests-in-parallel-with-python-3-5-without-aiohttp-264dc0f8546
https://medium.com/velotio-perspectives/an-introduction-to-asynchronous-programming-in-python-af0189a88bbb
[硬件 GPS 模块] 采集 GPS 数据发送到 [物联网服务器] , [我的网站] 定时 10 秒向 [物联网服务器] 请求 GPS 数据更新信息。
现在遇到 requests 请求 gps 数据时候阻塞,导致网站卡顿,故想到使用 Python 的多线程解决:
线程 A: 主线程,跑 flask
线程 B:Requests 线程,睡眠 10 秒,唤醒请求 GPS 数据
不考虑使用前端请求,就讨论用 Python 线程解决,如果是嵌入式的话可以这样做:
1. 在线程 A 中创建低优先级的线程 B
1. 有网络请求时执行线程 A,空闲时执行线程 B,这样既不影响用户网页请求,又可以发起 Requests 请求更新 GPS 数据
回到 Flask 和 Python,查了一下 Flask 也有多线程模式,我尝试开启 threaded 选项,并未解决阻塞问题。
查了 Python 3.7 的新特性,asyncio,能否使用 asyncio 解决多线程问题呢?
对 Python 的理解很粗浅,顺便上两个没太理解的链接:
https://hackernoon.com/how-to-run-asynchronous-web-requests-in-parallel-with-python-3-5-without-aiohttp-264dc0f8546
https://medium.com/velotio-perspectives/an-introduction-to-asynchronous-programming-in-python-af0189a88bbb
