使用Python传递对文件的引用而不是文件本身

时间:2014-02-06 03:47:34

标签: python celery

我似乎无法确定如何在Python中创建文件,然后传递对文件的引用,以便将其转换为不同的图像分辨率。

我正在使用Celery以异步方式生成这些不同的图像分辨率,并且传递整个图像会消耗太多内存,最终导致内存不足错误。

关于如何实现这一目标的任何建议?以下是一些插图代码:

file_object = open('/tmp/image.jpg', 'w+')

with api.fetch_remote_file() as f:

    file_object.write(f.read())
    file_object.seek(0)

    # Pass a file object through a chain of functions to generate new images
    chain = generate_images.s(file_object, "high") | generate_images.s(file_object, "medium") | delete_temp(file_object)
    chain()



# A Celery task to process images asynchronously from a queue
@app.task
def generate_images(file_object, quality):

    #Convert the image to a lower resolution and store it
    image = convert(file_object.read())

    return file_object, image

1 个答案:

答案 0 :(得分:1)

您可以将文件的绝对路径传递给芹菜工人。然后让工作人员打开文件,然后阅读内容。