Finished timer implementation

This commit is contained in:
jeffser 2024-09-02 02:55:02 -06:00
parent daf56c2de4
commit 0d3b544a73
3 changed files with 17 additions and 9 deletions

View File

@ -9,6 +9,8 @@ from time import sleep
logger = getLogger(__name__)
window = None
def log_output(pipe):
with open(os.path.join(data_dir, 'tmp.log'), 'a') as f:
with pipe:
@ -33,6 +35,7 @@ class instance():
self.idle_timer_stop_event=threading.Event()
self.idle_timer=None
self.instance=None
self.busy=0
if not self.remote:
self.start()
@ -45,6 +48,7 @@ class instance():
return headers if len(headers.keys()) > 0 else None
def request(self, connection_type:str, connection_url:str, data:dict=None, callback:callable=None) -> requests.models.Response:
self.busy += 1
if self.idle_timer:
self.idle_timer_stop_event.set()
self.idle_timer=None
@ -63,27 +67,29 @@ class instance():
for line in response.iter_lines():
if line:
callback(json.loads(line.decode("utf-8")))
response = response
else:
response = requests.post(connection_url, headers=self.get_headers(True), data=data, stream=False)
case "DELETE":
response = requests.delete(connection_url, headers=self.get_headers(False), json=data)
self.busy -= 1
if not self.idle_timer:
self.start_timer()
return response
def run_timer(self):
if not self.idle_timer_stop_event.wait(self.idle_timer_delay*60):
if not self.idle_timer_stop_event.wait(self.idle_timer_delay*1):
window.show_toast(_("Ollama instance was shut down due to inactivity"), window.main_overlay)
self.stop()
def start_timer(self):
if self.idle_timer:
self.idle_timer_stop_event.set()
self.idle_timer=None
if self.idle_timer_delay > 0:
self.idle_timer_stop_event.clear()
self.idle_timer = threading.Thread(target=self.run_timer)
self.idle_timer.start()
if self.busy == 0:
if self.idle_timer:
self.idle_timer_stop_event.set()
self.idle_timer=None
if self.idle_timer_delay > 0 and self.busy == 0:
self.idle_timer_stop_event.clear()
self.idle_timer = threading.Thread(target=self.run_timer)
self.idle_timer.start()
def start(self):
if not os.path.isdir(os.path.join(cache_dir, 'tmp/ollama')):

View File

@ -450,6 +450,7 @@ class message(Gtk.Overlay):
self.dt = datetime.datetime.now()
self.add_footer(self.dt)
window.show_notification(chat.get_name(), self.text[:200] + (self.text[200:] and '...'), Gio.ThemedIcon.new("chat-message-new-symbolic"))
window.ollama_instance.start_timer()
window.save_history(chat)
else:
sys.exit()

View File

@ -836,6 +836,7 @@ Generate a title following these rules:
message_widget.window = self
chat_widget.window = self
model_widget.window = self
connection_handler.window = self
drop_target = Gtk.DropTarget.new(Gdk.FileList, Gdk.DragAction.COPY)
drop_target.connect('drop', self.on_file_drop)