flask_restful 接口第一次收到post消息后异步启动一个死循环进程,第二次收到post消息停掉这个死循环进程
时间: 2023-12-03 20:04:46 浏览: 187
启动一个进程和关闭一个进程
5星 · 资源好评率100%
在 Flask-RESTful 中,可以使用 Flask 自带的 `request` 模块获取 POST 请求体中的数据,使用 Python 的 `threading` 模块创建并启动异步线程,使用全局变量控制线程的启动和停止。
以下是一个示例代码,可以实现在接收到第一次 POST 请求时启动一个死循环进程,接收到第二次 POST 请求时停止该进程:
```python
from flask import Flask, request
from flask_restful import Api, Resource
import threading
import time
app = Flask(__name__)
api = Api(app)
# 全局变量,用于控制线程的启动和停止
running = False
class MyResource(Resource):
def post(self):
global running
# 获取 POST 请求体中的数据
data = request.get_json()
if not running:
# 第一次 POST 请求,启动死循环进程
running = True
t = threading.Thread(target=loop)
t.start()
return {'message': 'loop started'}
else:
# 第二次 POST 请求,停止死循环进程
running = False
return {'message': 'loop stopped'}
def loop():
while running:
print('looping...')
time.sleep(1)
api.add_resource(MyResource, '/')
if __name__ == '__main__':
app.run(debug=True)
```
在上述代码中,我们定义了一个 `MyResource` 类,继承了 `Resource` 类。当接收到 POST 请求时,如果 `running` 为 `False`,则启动死循环进程;如果 `running` 为 `True`,则停止死循环进程。在死循环进程中,我们每隔 1 秒钟打印一条信息。
需要注意的是,在实际使用中需要根据具体需求修改 `loop` 函数中的代码。另外,该代码仅供参考,实际情况可能需要根据具体需求进行修改。
阅读全文