You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
1.8 KiB
64 lines
1.8 KiB
from flask import request, jsonify, redirect, url_for, render_template
|
|
from app import app, db
|
|
# from app.models import User
|
|
import PIL
|
|
from eden.client import Client
|
|
from eden.datatypes import Image
|
|
import time
|
|
|
|
@app.route('/api', methods=['POST'])
|
|
def process_request():
|
|
image = request.files.get('image')
|
|
text = request.form.get('text')
|
|
blocks = request.form.getlist('blocks')
|
|
|
|
# Process image, text, and blocks as needed
|
|
|
|
# log to flask log the blocks list.
|
|
app.logger.info(blocks)
|
|
app.logger.info(text)
|
|
|
|
results = communicate_with_eden(app, image)
|
|
|
|
return jsonify(results)
|
|
# return jsonify(success=True)
|
|
|
|
|
|
def communicate_with_eden(app, image, ip_address="172.18.0.3", port="5656"):
|
|
url = f"http://{ip_address}:{port}"
|
|
|
|
## set up a client
|
|
c = Client(url=url, username="abraham")
|
|
|
|
# get server's identity
|
|
generator_id = c.get_generator_identity()
|
|
print(generator_id)
|
|
|
|
app.logger.info("setting config")
|
|
## define input args to be sent
|
|
config = {
|
|
"width": 2000, ## width
|
|
"height": 1000, ## height
|
|
"input_image": Image(
|
|
PIL.Image.open(image.stream)
|
|
), ## images require eden.datatypes.Image()
|
|
}
|
|
|
|
app.logger.info("set config, running now")
|
|
# start the task
|
|
run_response = c.run(config)
|
|
results = c.fetch(token=run_response["token"])
|
|
|
|
print("Intitial response")
|
|
# check status of the task, returns the output too if the task is complete
|
|
# results = c.await_results(token=run_response["token"], interval=1, show_progress=False)
|
|
i = 0
|
|
while results["status"].get("status") != "complete":
|
|
results = c.fetch(token=run_response["token"])
|
|
print(results)
|
|
time.sleep(0.1)
|
|
i += 1
|
|
if i > 50:
|
|
break
|
|
|
|
return results
|