跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • [ Python ]关于 flask 视图函数中需要多线程 or 多进程的实现
未分類
17 1 月 2021

[ Python ]关于 flask 视图函数中需要多线程 or 多进程的实现

[ Python ]关于 flask 视图函数中需要多线程 or 多进程的实现

資深大佬 : maobukui 2

对于 flask 一直有个疑问,网上看了半天教程,没找到答案。

flask 是一个框架,视图函数中的操作默认应该是单线程的吧?通过框架开启多线程或者多进程,那只是对于请求而言,即多个请求同时过来,开启了并行处理,而针对某个请求,内部想开启多线程或多进程该怎么处理? 例如:

@app.route("/login", methods=["GET"])     def w_login():         handler_A()         handler_B()           return AB 

上述场景下,希望拿到特定请求后,handler_A (耗时) 和 handler_B 同时执行,而不是顺序执行。

  • 是直接使用 python 标准的 threading 或者 multiprocessing 吗?
  • 还是说,flask 默认已经在并行处理了?

感谢!

大佬有話說 (8)

  • 資深大佬 : LeeReamond

    这种情况下不会默认并行,如果是的话属于打破 python 解释规则的行为,很颠覆。需要用户自行处理线程,并且注意 gil

  • 資深大佬 : lolizeppelin

    HTTP 服务就干符合 http 协议的事

    写成异步接口 返回任务 id
    rpc 丢到后面服务器干这事

    结果从任务 id 拿

  • 資深大佬 : lewinlan

    想开就开呗,join 就是了

  • 資深大佬 : no1xsyzy

    自行处理线程或者进程。但不推荐 multiprocessing,这似乎会(或者很容易会)重建整个框架(重新 create_app )。

    还可以 celery (但会影响整个架构……

  • 資深大佬 : iConnect

    要看你的业务需求,进程 /线程之间要不要交换数据,实现的方案就差别大很多的。

  • 資深大佬 : ebingtel

    把数据放到任务队列里面 起个后台服务去处理……多线程可以,但是 很难管理线程

  • 資深大佬 : xiaolinjia

    我一般如果是小任务直接开个 threading.Thread 去跑,需要监控的任务就上 celery+flower 。

  • 資深大佬 : hanssx

    我之前也有相关疑问,后来看到别人的代码,可以提交到 ThreadPoolExecutor 用线程作为处理方案,或者用 apscheduler 做 job 调度,再或者用 celery 、dramatic 、arq 等异步框架,或者自己用 redis 或其他方法实现队列自己处理?
    PS:不知道为啥我这边 celery bug 多。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具