python - 如何在python中返回函数后在后台运行一些代码
问题描述
我正在尝试制作一个将压缩文件组合的后台进程。我有一个具有烧瓶 API 的 python 项目。我希望当烧瓶 API 收到请求时,应该开始压缩并且 API 返回不应该等待压缩线程结束。
我有这一堆代码,但它等待完成的时间
@server.route("/api/dummy/zip", methods=['GET'])
def compress_file():
print("zipping starts at", time.time())
file_path = ""
file_name = ""
comObj = compression_handler.CompressionThread()
comObj.__int__(file_name, file_path)
logging.info("compression starts")
print("zipping end at", time.time())
return "zipping has took "
和compression_handler python文件:
import zipfile
import os
from os.path import basename
import threading
import threading
from Main import logging
class CompressionThread:
def __int__(self, file_name, file_path):
thread = threading.Thread(target=self.compress, args=(['/Users/nirmalsarswat/Desktop/jdk-8u171-macosx-x64.dmg', '/Users/nirmalsarswat/Desktop/resume-nirmal-sarswat.pdf'],))
thread.daemon = True
thread.start()
logging.info('thread has started, in progress')
def compress(self, file_list):
print("running thread in list")
try:
zip_path = '/Users/nirmalsarswat/Documents/newone.zip'
print(zip_path)
zip_file = zipfile.ZipFile(zip_path, 'w', zipfile.ZIP_DEFLATED)
for files in file_list:
zip_file.write(files, basename(files))
zip_file.close()
logging.info("compression of files is done !!!")
except Exception as e:
print("exception occured during compression %s" % e)
下面的代码输出是这样的(在控制台调试中)
> Zipping starts at xxxxx
> running thread in list \n
> compression of files is done !!! \n
> thread has started, in progress
> compression starts
> zipping end at xxxxxx
解决方案
推荐阅读
- c# - 小型共享 C# 类的项目布局
- opengl - 在opengl中的多个卷之间正确混合
- reactjs - 如何摆脱嵌套在 BrowserRouter 中的 MemoryRouter?
- python - 标准化 numpy 信号(3 维数组),按轴 = 2,在 -1 到 1 之间
- r - 为什么 R 会在我的列名中添加前缀?
- r - R 中对大数据集有哪些有用的优化?
- javascript - 当我用函数覆盖 .ajax 时,为什么不能将 post 变量扔到 PHP 中?
- java - 从 C# 到 Android 的 RSA 公钥传输
- node.js - 我无法在 Node.js 命令中指向我的方向
- python - Jupyter 无法识别 numpy(使用自制 pyenv)