我遇到了一个问题,在一个单独的线程中上传到python3.6中的googledrive似乎仍然阻塞了我的主线程。你知道吗
我正在运行一个flask
服务器(在docker容器中),它根据请求启动一个单独的线程,该线程下载一个文件并将其上载到Google Drive。除去其他一切,基本上是这样的:
@app.route('/work')
def work():
thread = Thread(target=handle, args=request.args.to_dict())
thread.start()
return 'Working'
def handle(args):
filename = download(args)
upload_to_drive(filename)
def upload_to_drive(filename):
media = MediaFileUpload(filename, mimetype=appropriate_mimetype(filename))
drive = googleapiclient.discovery.build('drive', 'v3', credentials=CREDS)
uploaded_file_id = drive.files().create(
body={'name': filename},
media_body=media,
fields='id'
).execute()
return uploaded_file_id
在服务器启动线程并响应请求之后,向服务器发出的任何其他请求都可以得到服务,但只能在服务器下载时(使用requests.get(..., stream=True).iter_content()
)。但是,当上传到Google驱动器开始时,任何新的请求都会挂起,直到上传完成。你知道吗
知道原因吗?我能做些什么来保持服务器响应?你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐