Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IsADirectoryError: [Errno 21] Is a directory: '/xxx' #8265

Closed
1 task done
yangmingbai opened this issue May 11, 2024 · 4 comments
Closed
1 task done

IsADirectoryError: [Errno 21] Is a directory: '/xxx' #8265

yangmingbai opened this issue May 11, 2024 · 4 comments
Labels
bug Something isn't working pending clarification

Comments

@yangmingbai
Copy link

yangmingbai commented May 11, 2024

Describe the bug

This is an occasional problem,when i send a request and wait for the response, processing_utils.py throw this error,The directory structure of this demo is / gradio-demo/demo.py

Have you searched existing issues? 🔎

  • I have searched and found no existing issues

Reproduction

import gradio as gr
import requests
import json
import  uuid
from PIL import Image
from io import BytesIO
import os
os.environ["GRADIO_CACHE_EXAMPLES"] = "lazy"

url = "http://xxxx/api/v1/comfy"


def flip_sdxl_variation(input_img, prompt, ratio, batch_count):
    try:
        file_name = f"aigc/{uuid.uuid4()}.png"
        image = Image.fromarray(input_img)
        image_byte_array = BytesIO()
        image.save(image_byte_array, format='JPEG')
        image_byte_array.seek(0)
        img_url = aliyunoss.put_object(file_name, image_byte_array)
        # remote_url = ""
        remote_url = url + "/images/create"
        data = {
            "initImage": img_url,
            "prompt": prompt,
            "ratio": ratio,
            "batchCount": int(batch_count)
        }
        res = requests.post(remote_url, json=data,timeout=360)
        images = []
        if res.status_code == 200:
            res_data = res.json()
            images = res_data["data"]["images"]
        return images
    except Exception as e:
        return str(e)



with gr.Blocks() as demo:
    with gr.Tab("imgVariation"):
        with gr.Row():
            variation_sdxl_input = gr.Image()
            variation_sdxl_output = gr.Gallery(allow_preview=True,preview=True,columns=4)
        variation_sdxl_button = gr.Button("submit",variant='primary')

    with gr.Accordion("params", open=True):
        text_input = gr.Textbox(label="prompt")
        ratio = gr.Radio(label="ratio",choices=["1:1", "3:4", "4:3", "16:9","9:16"])
        batch_count = gr.Number(label="number",value=1, minimum=1, maximum=10)

    variation_sdxl_button.click(flip_sdxl_variation,
                                inputs=[variation_sdxl_input, text_input, ratio, batch_count],
                                outputs=variation_sdxl_output,
                                trigger_mode="once"
                                )
if __name__ == "__main__":
    demo.launch(server_name="0.0.0.0",server_port=8000)

Screenshot

No response

Logs

Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/gradio/queueing.py", line 527, in process_events
    response = await route_utils.call_process_api(
  File "/usr/local/lib/python3.8/site-packages/gradio/route_utils.py", line 270, in call_process_api
    output = await app.get_blocks().process_api(
  File "/usr/local/lib/python3.8/site-packages/gradio/blocks.py", line 1897, in process_api
    data = await self.postprocess_data(fn_index, result["prediction"], state)
  File "/usr/local/lib/python3.8/site-packages/gradio/blocks.py", line 1725, in postprocess_data
    outputs_cached = await processing_utils.async_move_files_to_cache(
  File "/usr/local/lib/python3.8/site-packages/gradio/processing_utils.py", line 479, in async_move_files_to_cache
    return await client_utils.async_traverse(
  File "/usr/local/lib/python3.8/site-packages/gradio_client/utils.py", line 1008, in async_traverse
    new_obj.append(await async_traverse(item, func, is_root))
  File "/usr/local/lib/python3.8/site-packages/gradio_client/utils.py", line 1003, in async_traverse
    new_obj[key] = await async_traverse(value, func, is_root)
  File "/usr/local/lib/python3.8/site-packages/gradio_client/utils.py", line 999, in async_traverse
    return await func(json_obj)
  File "/usr/local/lib/python3.8/site-packages/gradio/processing_utils.py", line 453, in _move_to_cache
    temp_file_path = await block.async_move_resource_to_block_cache(
  File "/usr/local/lib/python3.8/site-packages/gradio/blocks.py", line 286, in async_move_resource_to_block_cache
    temp_file_path = processing_utils.save_file_to_cache(
  File "/usr/local/lib/python3.8/site-packages/gradio/processing_utils.py", line 257, in save_file_to_cache
    temp_dir = hash_file(file_path)
  File "/usr/local/lib/python3.8/site-packages/gradio/processing_utils.py", line 189, in hash_file
    with open(file_path, "rb") as f:
IsADirectoryError: [Errno 21] Is a directory: '/gradio-demo'

System Info

gradio==4.31.0

Severity

@yangmingbai yangmingbai added the bug Something isn't working label May 11, 2024
@sachin-aakash
Copy link

Facing the same issue as well.

@freddyaboulton
Copy link
Collaborator

Hi @yangmingbai - is it possible the api is returning an empty string in res_data["data"]["images"]?

@sachin-aakash , are you using the same demo?

@yangmingbai
Copy link
Author

@freddyaboulton,Thanks,This is an error raised by requests, requests.Post throw an error "Connection aborted.RemoteDisconnected('Remote end closed connection without response')", Thanks again!

@sachin-aakash
Copy link

sachin-aakash commented May 14, 2024

Hi @yangmingbai - is it possible the api is returning an empty string in res_data["data"]["images"]?

@sachin-aakash , are you using the same demo?

No, here is my code and the error -

def pdf_process(file):
    pdf_file_path = file
    dir_location = os.path.dirname(pdf_file_path[0])
    filename = os.path.split(pdf_file_path[0])
    pdf_name = filename[1].split(".pdf")[0]
    command = ["node", "pdfToImageDynamic.js", quote(pdf_file_path[0]), dir_location, pdf_name]
    subprocess.run(command, check=True)
    image_name = os.path.join(dir_location,pdf_name + ".1.png")
    try:
        elements = partition_image(filename=image_name, strategy=strategy,infer_table_structure=True)
        elements_to_json(elements, filename=f"{image_name}.json")
        output_final =  process_json_file(f"{image_name}.json",dir_location,pdf_name)
        print(output_final)
        return output_final

    except subprocess.CalledProcessError as e:
                       print("Error" + e.output)
                       pass

as you can see it is printing out the path to the file that i am returning -

/private/var/folders/lx/kvs2jbr52gj0ll9mcpm35j4c0000gn/T/gradio/30a2a6abd0a693be05828e4645c14d2839bbae2f/Australia and New Zealand Banking Group April Green Bean Packagingprompt_2.txt
Traceback (most recent call last):
  File "/Users/schhatbar/anaconda3/envs/unity/lib/python3.9/site-packages/gradio/queueing.py", line 527, in process_events
    response = await route_utils.call_process_api(
  File "/Users/schhatbar/anaconda3/envs/unity/lib/python3.9/site-packages/gradio/route_utils.py", line 270, in call_process_api
    output = await app.get_blocks().process_api(
  File "/Users/schhatbar/anaconda3/envs/unity/lib/python3.9/site-packages/gradio/blocks.py", line 1870, in process_api
    data = [
  File "/Users/schhatbar/anaconda3/envs/unity/lib/python3.9/site-packages/gradio/blocks.py", line 1871, in <listcomp>
    await self.postprocess_data(fn_index, list(o), state)
  File "/Users/schhatbar/anaconda3/envs/unity/lib/python3.9/site-packages/gradio/blocks.py", line 1725, in postprocess_data
    outputs_cached = await processing_utils.async_move_files_to_cache(
  File "/Users/schhatbar/anaconda3/envs/unity/lib/python3.9/site-packages/gradio/processing_utils.py", line 479, in async_move_files_to_cache
    return await client_utils.async_traverse(
  File "/Users/schhatbar/anaconda3/envs/unity/lib/python3.9/site-packages/gradio_client/utils.py", line 999, in async_traverse
    return await func(json_obj)
  File "/Users/schhatbar/anaconda3/envs/unity/lib/python3.9/site-packages/gradio/processing_utils.py", line 453, in _move_to_cache
    temp_file_path = await block.async_move_resource_to_block_cache(
  File "/Users/schhatbar/anaconda3/envs/unity/lib/python3.9/site-packages/gradio/blocks.py", line 286, in async_move_resource_to_block_cache
    temp_file_path = processing_utils.save_file_to_cache(
  File "/Users/schhatbar/anaconda3/envs/unity/lib/python3.9/site-packages/gradio/processing_utils.py", line 257, in save_file_to_cache
    temp_dir = hash_file(file_path)
  File "/Users/schhatbar/anaconda3/envs/unity/lib/python3.9/site-packages/gradio/processing_utils.py", line 189, in hash_file
    with open(file_path, "rb") as f:
IsADirectoryError: [Errno 21] Is a directory: '/'

This code was working fine before i updated gradio to the latest version.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working pending clarification
Projects
None yet
Development

No branches or pull requests

3 participants