首页 > 解决方案 > 如何在烧瓶中处理大型任务

问题描述

我正在为电子商务网站使用烧瓶框架,它为每个产品图像添加一个水印,我想在烧瓶 cli 中添加命令来重新生成所有图像,但是有很多关于 80,000 个图像的图像我该如何管理这个任务

标签: python-3.xflasktaskweb-worker

解决方案


我将建议使用以下方法(我正在为获取大量数据而做):

用 Python 编写一个脚本,它以图像名称/路径作为参数并在后台运行,或者可能是一个 cron。它将继续检查您的数据库或 Kafka,上传图像时将在哪里发布事件。

从烧瓶中,您只需要继续阅读任务的状态或使用 ajax 进行一些异步调用以继续发布状态

或者您可以发送如下 CLI 命令:

import os
os.system('Your command with parameter(s)')

总的来说,我可以看到您将不得不结合使用一些后台作业以及 Ajax 或 Async 调用

为了使处理更快,您可以使用线程。但请确保您的系统内存足够并且打开文件限制足够好。如果有紧缩或您想让它优化。让您的图像处理功能休眠一段时间。伪代码如下:

'''python
import threading
import time
import os

def funImageProcessor(self, argImagePath,Arg2):
    #do your Stuffs here
    time.sleep(3) #use this to run your threads in optimal way 

for image in Images:
    threadImg = threading.Thread(target=funImageProcessor, args=(
            self, argImagePath,Arg2))                
            self.threadsImg.append(threadImg)
            threadImg.start()
for tpo in self.threadsImg:
    tpo.join()
'''

推荐阅读