summaryrefslogtreecommitdiff
path: root/lib/extensions/print_pdf.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/extensions/print_pdf.py')
-rw-r--r--lib/extensions/print_pdf.py34
1 files changed, 16 insertions, 18 deletions
diff --git a/lib/extensions/print_pdf.py b/lib/extensions/print_pdf.py
index 01878e8d..1d5af76a 100644
--- a/lib/extensions/print_pdf.py
+++ b/lib/extensions/print_pdf.py
@@ -3,7 +3,6 @@
# Copyright (c) 2010 Authors
# Licensed under the GNU GPL version 3.0 or later. See the file LICENSE for details.
-import errno
import json
import logging
import os
@@ -13,6 +12,7 @@ import time
from copy import deepcopy
from datetime import date
from threading import Thread
+from contextlib import closing
import appdirs
from flask import Flask, Response, jsonify, request, send_from_directory
@@ -162,25 +162,24 @@ class PrintPreviewServer(Thread):
def disable_logging(self):
logging.getLogger('werkzeug').setLevel(logging.ERROR)
+ # https://github.com/aluo-x/Learning_Neural_Acoustic_Fields/blob/master/train.py
+ # https://github.com/pytorch/pytorch/issues/71029
+ def find_free_port(self):
+ with closing(socket.socket(socket.AF_INET, socket.SOCK_STREAM)) as s:
+ s.bind(('localhost', 0))
+ return s.getsockname()[1]
+
def run(self):
self.disable_logging()
self.host = "127.0.0.1"
- self.port = 5000
-
- while True:
- try:
- self.flask_server = make_server(self.host, self.port, self.app)
- self.server_thread = Thread(target=self.flask_server.serve_forever)
- self.server_thread.start()
- except socket.error as e:
- if e.errno == errno.EADDRINUSE:
- self.port += 1
- continue
- else:
- raise
- else:
- break
+ self.port = self.find_free_port()
+ # exporting the port number for languages to work in electron vuejs part of inkstitch
+ os.environ['FLASKPORT'] = str(self.port)
+
+ self.flask_server = make_server(self.host, self.port, self.app)
+ self.server_thread = Thread(target=self.flask_server.serve_forever)
+ self.server_thread.start()
class Print(InkstitchExtension):
@@ -331,13 +330,12 @@ class Print(InkstitchExtension):
realistic_color_block_svgs=realistic_color_block_svgs
)
print_server.start()
-
# Wait for print_server.host and print_server.port to be populated.
# Hacky, but Flask doesn't have an option for a callback to be run
# after startup.
time.sleep(0.5)
- browser_window = open_url("http://%s:%s/" % (print_server.host, print_server.port))
+ browser_window = open_url(print_server.host, print_server.port, True)
browser_window.wait()
print_server.stop()
print_server.join()