精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

關于FastAPI中在新線程里調用協成函數問題

開發
在異步接口里面接收批量上傳的文件夾后通過webdav3進行批量進行文件處理。其實涉及的問題就是:相對于在異步之中進行線程化的異步處理。

先前有公眾號朋友問起一個問題,大概的問題是這樣:

在異步接口里面接收批量上傳的文件夾后通過webdav3進行批量進行文件處理。其實涉及的問題就是:相對于在異步之中進行線程化的異步處理。

大致的代碼如下所示:


@uploadrp.post('/upload/rp')
async def upload_rp_file(file: List[UploadFile] = File(...)):
   ........
    upload_result = await new_upload_file(file_path=file_path, file_name=file_name, old_name=rp_dir_name)
   
    .........

其中對應的new_upload_file也是異步函數,但是里面涉及到webdav3庫的異步的調用,如下代碼所示:

async def new_upload_file(file_path, file_name, old_name):
    """ 上傳文件夾 """
.........
  upload_rp_file_result = client.upload_async('' + file_name, file_path,
                                                callback=partial(completion_callback, old_file_dir=old_name, file_name=file_name))

  .........

容納后在調用upload_async的使用,需要進行任務處理完成的回調,也就是completion_callback函數,它的代碼如下:

def completion_callback(old_file_dir, file_name):
    pss

它的問題就是在completion_callback還有一個異步的函數需要調用的時候就遇到問題了:

(1) 我無法在upload_async上傳文件完成后的回調函數使用async,即 async def completion_callback

(2) 我在completion_callback中獲取當前事件循環,因為執行這個回調函數的時候,控制臺打印當前沒有事件循環

3) 我在completion_callback中new一個事件循環(new_event_loop)然后用create_task或run_until_complete執行update_rp_file_status函數的時候,都不成功:

  • 要不然就報update_rp_file_status函數跟new的事件循環不是同一個...
  • 要不就是這個update_rp_file_status壓根不執行...
  • 要不就是還沒執行,new出來的事件循環,在update_rp_file_status還沒執行的時候就被銷毀了,很多問題...

問題探究

其實這個問題本質其實就是關于 client.upload_async中啟用了新的線程去異步處理了,導致了開啟了新的線程的問題,如下 client.upload_async的代碼:

由此可見,問題肯本原因在于是因為我們是在新線程中調用了異步函數,而新線程沒有自己的事件循環導致的。

回到事件循環的本身上,我們知道首先需要知道一點:

異步函數需要在事件循環中運行。但是由于我們啟動服務之后,在主線程中,FastAPI應用程序已經創建了一個事件循環,并且通過uvicorn.run()方法來運行該應用程序,而這個的事件循環對象是當前主線程創建出來的, 而當我們在新線程中,也就是client.upload_async調用之后,開啟的線程中并沒有默認的事件循環可用。因此,當你嘗試在新線程中調用異步函數時,就會拋出RuntimeError: There is no current event loop in thread異常,甚至你嘗試打印獲取當前運行的事件循環都無法獲取到。如下代碼所示:

from fastapi import FastAPI
import asyncio
app = FastAPI()


from threading import Thread  # 創建線程的模塊

def task(name):
    print(asyncio.get_event_loop())


async def do_task():
    # 異步任務的邏輯
    await asyncio.sleep(1)
    print("異步任務完成")


@app.get("/items")
async def read_item():
    p = Thread(target=task, args=('線程1',))
    p.start()  
    return {"data": "ok"}

在上面的等待嗎中我們直接輸出當前 print(asyncio.get_event_loop())也會遇到如下類似的錯誤提示:

問題解決

解決此類的問題,開始的時候,因為具體可能沒了解帶業務細節和邏輯,所以給的思路也有點偏差,后來自己嘗試后,其實才發現原來只是一個比較簡單的問題,此類的問題,我們可以在新線程中創建一個新的事件循環,并將任務添加到該事件循環中,以確保異步函數能夠正確運行。這樣,每個線程都有自己的事件循環,可以獨立地運行異步任務。也就是如下的代碼:

from fastapi import FastAPI
import asyncio
app = FastAPI()


from threading import Thread  # 創建線程的模塊

def task(name):
    print(asyncio.get_event_loop())
    # 嘗試去執行異步任務
    asyncio.run(do_task())


async def do_task():
    # 異步任務的邏輯
    await asyncio.sleep(1)
    print("異步任務完成")


@app.get("/items")
async def read_item():
    p = Thread(target=task, args=('線程1',))
    p.start()  
    return {"data": "ok"}

在上面的代碼中使用  asyncio.run開啟新的事件循環去處理異步函數即可。但是之前那個朋友也說它嘗試夠使用在completion_callback中new一個事件循環(new_event_loop)然后用create_task或run_until_complete執行update_rp_file_status函數的時候,都不成功,或許可能得原因是它創建新的事件循環之后,沒有進行重新設置,所以會導致無法設置成功,也就是我們也可以改為如下代碼進行運行:

def task(name):
    loop = asyncio.new_event_loop()  # 創建新的事件循環
    asyncio.set_event_loop(loop)  # 設置新的事件循環為當前線程的事件循環
    loop.run_until_complete(do_task())  # 在新的事件循環中運行異步任務

關于asyncio.run 和手動的設置創建事件循環

asyncio.run()是從Python 3.7版本引入的一個方便的函數,它用于運行異步函數。它自身會自動創建一個新的事件循環,并將異步函數添加到該事件循環中運行。在異步函數完成后,它會關閉事件循環并返回結果。而我們的

 loop = asyncio.new_event_loop()  # 創建新的事件循環
    asyncio.set_event_loop(loop)  # 設置新的事件循環為當前線程的事件循環
    loop.run_until_complete(do_task())  # 在新的事件循環中運行異步

是一種手動創建、設置和運行事件循環的方法包括:

使用asyncio.new_event_loop()創建一個新的事件循環。使用asyncio.set_event_loop(loop)將新創建的事件循環設置為當前線程的事件循環。使用loop.run_until_complete(do_task())在新的事件循環中運行異步任務,直到任務完成。

他們之間的區別在于使用asyncio.run()時,它會自動處理事件循環的創建、設置和關閉,非常方便。而手動創建、設置和運行事件循環需要更多的代碼來處理這些步驟,但也提供了更多的靈活性和控制權。

責任編輯:趙寧寧 來源: 程序員小鐘同學
相關推薦

2011-08-22 17:13:00

LuaC++函數

2025-06-26 04:10:00

2012-04-16 13:47:37

JavaMatlab

2020-05-07 10:05:52

Python數據安全

2020-05-06 16:47:08

線程安全Python數據安全

2020-02-24 10:39:55

Python函數線程池

2024-12-13 09:26:35

2021-06-04 14:28:07

協程線程Android開發

2021-06-03 14:08:03

開發技能代碼

2010-03-15 17:17:29

Java線程池

2022-09-22 08:45:10

Vue組件函數

2022-09-21 11:45:22

Vue組件插槽函數

2023-12-24 12:56:36

協程

2020-11-29 17:03:08

進程線程協程

2011-03-29 10:41:51

Java線程安全

2009-08-11 14:16:00

Winform調用WEC#

2024-06-12 12:50:06

2009-07-31 14:47:22

JavaScript函C#

2010-03-18 14:36:46

Java線程同步

2017-08-10 15:50:44

PHP協程阻塞
點贊
收藏

51CTO技術棧公眾號

在线免费视频一区二区| 久久青草福利网站| 男人添女人下部视频免费| 国产美女免费视频| 欧美日一区二区在线观看| 日韩午夜电影av| 人人干视频在线| 欧洲亚洲在线| 久久99久久久欧美国产| 久久99久国产精品黄毛片入口| 无码人妻一区二区三区在线| 无遮挡爽大片在线观看视频| 国产精品人人做人人爽人人添| 亚洲va欧美va在线观看| 91看片在线播放| 精品久久影院| 精品国产乱码久久久久久影片| 天天夜碰日日摸日日澡性色av| 男男激情在线| 精品无码三级在线观看视频 | 欧美女同在线观看| 宅男网站在线免费观看| 2020国产精品久久精品美国| 91欧美精品成人综合在线观看| 最新av电影网站| 加勒比色综合久久久久久久久 | 亚洲综合精品国产一区二区三区| 国产综合精品一区| 在线国产精品视频| 免费不卡的av| 日日夜夜亚洲| 91久久精品网| 日韩一级性生活片| 秋霞午夜在线观看| 久久欧美中文字幕| 不卡视频一区二区三区| 在线免费看av片| 亚洲欧美日韩专区| 欧美国产极速在线| 97精品在线播放| 九九久久婷婷| 亚洲黄色成人网| 91精品视频国产| 国产超碰精品| 天天色综合天天| 美女在线免费视频| 91电影在线播放| 久久综合九色综合97婷婷| 超碰97网站| 国产三级漂亮女教师| 亚洲美女网站| 欧美激情精品久久久久久久变态 | 亚洲区小说区图片区qvod| 日韩欧美亚洲另类制服综合在线| 一级在线免费视频| 中文字幕av一区二区三区佐山爱| 精品国产鲁一鲁一区二区张丽| 毛片av在线播放| 中文字幕有码在线视频| 亚洲欧美在线aaa| 一区二区三区四区欧美日韩| 日本午夜在线| 26uuuu精品一区二区| 狠狠色噜噜狠狠色综合久| 亚洲av少妇一区二区在线观看| 日韩精品成人一区二区在线| 欧美洲成人男女午夜视频| 18精品爽视频在线观看| 欧美日本一区二区高清播放视频| 成年无码av片在线| 五月天丁香激情| 国产精品videossex久久发布| 欧美男插女视频| 欧美成人免费观看视频| 欧美精品激情| 欧美激情中文字幕乱码免费| 日本精品人妻无码77777| 亚洲精品国产首次亮相| 超碰精品一区二区三区乱码| 少妇人妻丰满做爰xxx| 在线成人直播| 日韩中文字幕av| 久久高清内射无套| 国产精品久久| 97免费在线视频| 日本黄色一级视频| 青青草97国产精品免费观看 | 国产熟妇一区二区三区四区| 丝袜美腿亚洲一区二区图片| 国产成人在线一区二区| 一本色道久久综合精品婷婷| 精品久久久久久久免费人妻| 电影在线观看一区二区| 在线不卡中文字幕| 性感美女一区二区三区| 四虎影视精品| 日韩在线观看你懂的| 2018天天弄| 亚洲啪啪91| 国产精品99一区| 国产精品久久久久久免费| 国产精品亚洲一区二区三区妖精| 痴汉一区二区三区| 国产三级在线免费观看| 亚洲国产精品传媒在线观看| 欧美一级黄色录像片| 国产盗摄精品一区二区酒店| 色综合久久久久网| 97超碰人人看| 最新国产一区| 色青青草原桃花久久综合| 国产精品999久久久| 视频一区欧美精品| 成人动漫视频在线观看免费| 日韩美女一级视频| 亚洲激情六月丁香| 久久久亚洲精品无码| 欧美片第1页| 欧美刺激午夜性久久久久久久| 中国xxxx性xxxx产国| 精品免费视频| 午夜精品福利视频| 国产精品永久久久久久久久久| www.亚洲人| 中文字幕一区二区三区乱码| 国产精品一二三产区| 91精品在线免费观看| 亚洲国产欧美视频| 亚洲h色精品| 国产精品99久久久久久白浆小说| 成人午夜视频一区二区播放| 国产精品久久久久三级| 日韩国产欧美亚洲| 91精品啪在线观看国产爱臀| 一区二区三区精品99久久 | 136福利精品导航| 中文字幕最新精品| 亚洲综合图片网| eeuss影院一区二区三区| 在线看视频不卡| 亚洲精品在线影院| 日韩高清人体午夜| 豆国产97在线 | 亚洲| 精品一区二区免费视频| 日本在线观看一区二区三区| 不卡视频观看| 亚洲电影免费观看高清完整版在线| 国产人与禽zoz0性伦| 天堂在线亚洲视频| 精品免费二区三区三区高中清不卡| 成人ww免费完整版在线观看| 欧美在线你懂得| 欧美熟妇激情一区二区三区| 亚洲欧美清纯在线制服| 国产富婆一区二区三区| 四季久久免费一区二区三区四区| 欧美无砖专区一中文字| 变态另类ts人妖一区二区| 久久福利精品| 国产精品一区二区三区不卡| 毛片在线网址| 欧美变态凌虐bdsm| 日韩激情一区二区三区| 国产成人a级片| 制服诱惑一区| **日韩最新| 久久亚洲精品成人| 国产夫妻性生活视频| 亚洲理论在线观看| 在线观看一区二区三区视频| 中文字幕一区二区三三| 亚洲综合成人婷婷小说| 天堂va在线| 亚洲精品美女视频| 亚洲第一在线播放| 久久久国产综合精品女国产盗摄| 少妇人妻互换不带套| 成人激情诱惑| 91视频8mav| 国产丝袜在线播放| 亚洲精品永久免费精品| 美女黄页在线观看| 亚洲青青青在线视频| 久久久久中文字幕亚洲精品| 中文欧美日韩| 日韩av电影免费在线| 国产a亚洲精品| 久久久精品在线观看| 亚洲卡一卡二卡三| 一本一道综合狠狠老| 潮喷失禁大喷水aⅴ无码| 激情深爱一区二区| 日韩欧美不卡在线| 日韩高清成人在线| 国产欧美久久一区二区| 99热国产在线中文| 亚洲福利视频网| 亚洲av综合一区| 一区二区三区免费在线观看| 国产高清自拍视频| 久久av资源站| 91专区在线观看| 精品一区电影| 99精品欧美一区二区三区| 亚洲www.| 国内精品伊人久久| 国产高清免费av在线| 欧美变态口味重另类| 国产成人无码专区| 亚洲精品国久久99热| 97超碰在线免费观看| 久久99国产精品尤物| 成年人午夜视频在线观看 | 久久福利毛片| wwwjizzjizzcom| 激情亚洲另类图片区小说区| 国产欧美精品xxxx另类| 国产乱码午夜在线视频| x99av成人免费| 日本福利片高清在线观看| 欧美午夜精品免费| 久久精品免费av| 亚洲欧洲av另类| 国产一级久久久久毛片精品| thepron国产精品| 激情在线观看视频| 日本网站在线观看一区二区三区| 日韩视频 中文字幕| 欧美一区二区三区激情视频| 国产精品一区二区免费看| 羞羞视频在线观看一区二区| 欧美一级黑人aaaaaaa做受| 超清av在线| 色综合久久久久久中文网| 国产不卡在线| 欧美成人激情在线| 中文字幕在线播放网址| 欧美理论片在线观看| caopon在线免费视频| 久久精品成人欧美大片| 国产区在线观看| 欧美不卡视频一区发布| av电影免费在线观看| 欧美人交a欧美精品| av网站免费在线观看| 欧美xxxx做受欧美.88| 制服丝袜中文字幕在线| 免费不卡在线观看av| 欧美另类tv| 高清在线视频日韩欧美| 高清毛片在线观看| 欧美中文在线字幕| 国产成人精品亚洲日本在线观看| 国产精品久久久久aaaa九色| 激情久久99| 亚洲一区二区中文字幕| ccyy激情综合| 国产精品免费在线| 台湾色综合娱乐中文网| 欧美一区二区三区四区五区六区| 国产一区二区三区91| 中文网丁香综合网| 欧美激情1区2区| 黄色www网站| 日韩影院精彩在线| 日本一二三区在线| 成人18视频日本| 天天躁日日躁aaaa视频| 国产精品伦一区二区三级视频| 色欲一区二区三区精品a片| 亚洲高清三级视频| 波多野结衣高清视频| 4438x亚洲最大成人网| 蜜桃在线一区二区| 亚洲人成电影网站色| 在线免费看a| 欧美高清视频在线| 久久91导航| 亚洲一区二区中文| 少妇久久久久| 少妇高潮流白浆| 99精品国产在热久久| 最近中文字幕一区二区| 国产成人精品综合在线观看| 亚洲 欧美 日韩在线| 欧美激情中文字幕一区二区| 性色av无码久久一区二区三区| 婷婷综合久久一区二区三区| 亚洲天堂aaa| 亚洲精品在线三区| av电影在线网| 97香蕉久久超级碰碰高清版| 成人黄色图片网站| 精品国产_亚洲人成在线| 欧美色蜜桃97| 日本中文字幕网址| 国产一区二区三区在线观看精品| 三级黄色片网站| 一区二区三区中文字幕电影 | 精品一区二区成人精品| 国产乱了高清露脸对白| 亚洲女人****多毛耸耸8| 天天操夜夜操视频| 欧美成人a∨高清免费观看| 国产黄在线看| 91av国产在线| 中文字幕一区二区三区四区久久| 五月天色一区| 一区二区日本视频| 91精品国产高清91久久久久久 | 国产一区二区三区日韩| 91久久免费视频| 午夜天堂影视香蕉久久| 国产日韩免费视频| 日韩在线激情视频| 欧美成人精品三级网站| 久久精品美女| 亚洲高清自拍| 图片区乱熟图片区亚洲| 国产欧美久久久精品影院| 在线观看日韩中文字幕| 精品美女一区二区三区| 18网站在线观看| 91精品在线观| 国产精品7m凸凹视频分类| www欧美激情| 国产视频911| 国产精品熟女视频| 亚洲欧美日韩天堂| 三上悠亚国产精品一区二区三区| 国产伦精品一区二区三区免 | 国内久久久精品| 一区二区三区免费在线看| 亚洲国产精品影视| 国产在线播放一区| 午夜爽爽爽男女免费观看| 欧美人伦禁忌dvd放荡欲情| 9色在线观看| 国产精品久久久久久久美男| 欧美日韩水蜜桃| 成 人 黄 色 小说网站 s色| 国产精品天干天干在线综合| 中文字幕av影视| 日韩亚洲成人av在线| 国产精品亚洲成在人线| 亚洲一区二区三区色| 青草av.久久免费一区| wwwww黄色| 在线综合视频播放| 欧美寡妇性猛交xxx免费| 999国产视频| 亚洲看片一区| 中文字幕一二三四区| 欧美日韩在线播| 精品美女在线观看视频在线观看| 成人午夜激情免费视频| 国产一区日韩欧美| 丰满大乳奶做爰ⅹxx视频| 在线视频国产一区| 欧美成年黄网站色视频| 亚洲在线免费观看| 精品动漫3d一区二区三区免费版| 99re久久精品国产| 91成人国产精品| 99热国产在线| 久久久久久草| 青青草一区二区三区| 欧美视频www| 亚洲国产天堂久久综合| 自拍偷自拍亚洲精品被多人伦好爽 | 国产清纯在线一区二区www| 91麻豆精品在线| 久久影院资源网| 国产 日韩 欧美 综合 一区| 久久久久久久久久福利| 亚洲欧美综合色| 无码国产精品一区二区色情男同| 国产成人精品久久| 亚洲五月综合| 一二三不卡视频| 欧美日韩成人激情| 青青青国内视频在线观看软件| 久久国产精品99久久久久久丝袜| 日韩av在线播放中文字幕| 九九视频在线观看| 亚洲图片在区色| 美国十次综合久久| 青青青在线播放| 亚洲精品ww久久久久久p站| 青春有你2免费观看完整版在线播放高清| 国产精品自拍网| 一区二区国产精品| 日本 欧美 国产| 亚洲精品少妇网址| 日本一区二区三区播放| 久久久久狠狠高潮亚洲精品| 亚洲精品日产精品乱码不卡| 欧美成熟毛茸茸| 国产成人女人毛片视频在线| 日本不卡不码高清免费观看|