1
xiaolinjia 2021-01-15 11:05:55 +08:00
不知道你想干嘛,本身 flask 就是一个请求开一个线程去处理的,你自己内部又整一个线程池去处理干嘛
|
2
zzping OP @xiaolinjia 你好,就是用户请求后,我返回一张二维码,然后我要检测用户是否扫描成功二维码。但是我要先返回给他二维码才能检测,我就想着再开个线程池去检测
|
3
sudoy 2021-01-15 11:38:55 +08:00 1
试试 asyncio 看,下次在代码前后加 ``` 别人看起来也舒服点啊,开帖子的时候支持 markdown 的
|
4
xiaolinjia 2021-01-15 11:41:54 +08:00 1
@zzping submit 参数里的 func,不带括号。他 submit 内部会 call 他。
|
5
yeqizhang 2021-01-15 11:43:48 +08:00
感觉你得重新理一下你的代码逻辑流程.. http 请求这样玩不合理...
|
7
zzping OP @xiaolinjia 汗,我弄掉
|
9
jswh 2021-01-15 11:59:55 +08:00
executor.submit(get.yiqing.main()),这里错了吧,你直接调用函数,而不是去线程李调用
|
10
smartwusir007 2021-01-15 12:01:47 +08:00
```python
from flask import Flask,request import get from wsgiref.simple_server import make_server from concurrent.futures import ThreadPoolExecutor app = Flask(__name__) executor = ThreadPoolExecutor(2) @app.route('/wx', methods=["GET", "POST"]) def getinput(): if (1): executor.submit(get.yiqing.main()) # 异步内容 return "success" #不 return 啊 被上面那个异步阻塞了 if __name__ == '__main__': server = make_server('', 8099, app) server.serve_forever() ``` 看着好别扭啊,我给格式化了一下,是这样吧 |
11
smartwusir007 2021-01-15 12:02:19 +08:00
@smartwusir007 咦,怎么不行
|
12
zzping OP from flask import Flask,request
from wsgiref.simple_server import make_server from concurrent.futures import ThreadPoolExecutor import time app = Flask(__name__) executor = ThreadPoolExecutor(2) def ceshi(): time.sleep(1000) @app.route('/wx', methods=["GET", "POST"]) def getinput(): if (1): executor.submit(ceshi) return "success" if __name__ == '__main__': server = make_server('', 8099, app) server.serve_forever() 怎么试都不行 都要等 time.sleep()后才会 return |
13
scukmh 2021-01-15 13:58:12 +08:00
@smartwusir007 开帖子支持 markdown,回复不支持。
|
15
treblex 2021-01-15 17:42:51 +08:00
/qrCodeLogin //生成二维码给用户扫描
/login //二维码地址,扫码打开之后 更新状态为已扫描待处理 /xxxx //扫码的页面 点击按钮请求业务接口,更改状态为 扫码成功 或者就是用 websocket 实时更新状态 参考微信的那些东西 我是这么理解的,还没具体做过这种业务 |
16
zzping OP |
18
tg3253 2021-01-15 21:18:56 +08:00
试试 gunicon eventlet 启动,多开几个线程
|
19
neoblackcap 2021-01-16 01:30:30 +08:00 1
人家二维码扫码不是这样做的,你开三个接口去做吧。
1. 接口返回二维码 2. 提供一个轮训接口,然后前端轮训对应的接口就知道有没有扫描了,扫描之后结果怎么样 3. 回调接口,接收回调的请求 这样一整套下来,你就回到最基本的用 flask 写接口的流程上面。看你的问题,你根本就不了解 wsgi 跟 asyncio 那套东西的运行机制,及早回头吧 |
20
zzping OP @neoblackcap 嗯谢谢,我还是得多研究研究
|