diff --git a/routes/timer.py b/routes/timer.py index c031e9b..a510623 100644 --- a/routes/timer.py +++ b/routes/timer.py @@ -376,7 +376,7 @@ def toggle(function_id): timer_functions = db.execute(""" SELECT id, name, code, environment, trigger_type, frequency_minutes, run_date, next_run, - last_run, enabled, invocation_count + last_run, enabled, invocation_count, runtime FROM timer_functions WHERE user_id = %s ORDER BY id DESC diff --git a/static/js/mithril/editor.js b/static/js/mithril/editor.js index b3c3885..bd40256 100644 --- a/static/js/mithril/editor.js +++ b/static/js/mithril/editor.js @@ -245,6 +245,7 @@ const Editor = { run_date: this.triggerType === "date" ? this.runDate : null, is_enabled: this.isEnabled, description: this.description, + runtime: this.runtime, } : { name: this.name, diff --git a/templates/dashboard/timer_functions/edit.html b/templates/dashboard/timer_functions/edit.html index 30f925c..4606ae1 100644 --- a/templates/dashboard/timer_functions/edit.html +++ b/templates/dashboard/timer_functions/edit.html @@ -38,6 +38,7 @@ history_url=url_for('timer.history', function_id=function_id)) }} showDeleteButton: true, isTimer: true, showTimerSettings: true, + frequencyMinutes: {{ timer_function.frequency_minutes }}, cancelUrl: "{{ url_for('timer.overview') }}", generateUrl: "{{ url_for('llm.generate_script') }}", showPublicToggle: false, diff --git a/templates/dashboard/timer_functions/new.html b/templates/dashboard/timer_functions/new.html index bfa724b..c0cf968 100644 --- a/templates/dashboard/timer_functions/new.html +++ b/templates/dashboard/timer_functions/new.html @@ -35,7 +35,11 @@ title='New Timer Function') isTimer: true, showTimerSettings: true, triggerType: 'interval', - frequencyMinutes: 60 + frequencyMinutes: 60, + runtime: 'node', + showPublicToggle: false, + showLogRequestToggle: false, + showLogResponseToggle: false }) }) diff --git a/templates/dashboard/timer_functions/overview.html b/templates/dashboard/timer_functions/overview.html index 569bd30..905b863 100644 --- a/templates/dashboard/timer_functions/overview.html +++ b/templates/dashboard/timer_functions/overview.html @@ -41,6 +41,10 @@ hx-get="{{ url_for('timer.edit', function_id=function.id) }}" hx-target="#container" hx-swap="innerHTML" hx-push-url="true"> {{ function.name }} + + {{ function.runtime }} + {{ function.invocation_count }} diff --git a/worker.py b/worker.py index 943d0c8..05187a4 100644 --- a/worker.py +++ b/worker.py @@ -19,7 +19,11 @@ init_app(app) # Initialize scheduler scheduler = APScheduler() TIMER_CHECK_INTERVAL = int(os.environ.get('TIMER_CHECK_INTERVAL_MINUTES', 1)) # Change back to 5 minutes -API_URL = os.environ.get('API_URL', 'http://isolator.web:5000/execute') + +# Runtime-specific API URLs matching app.py configuration +NODE_API_URL = os.environ.get('NODE_API_URL', 'http://isolator.web:5000/execute') +DENO_API_URL = os.environ.get('DENO_API_URL', 'http://deno-isolator.web:5000/execute') +PYTHON_API_URL = os.environ.get('PYTHON_API_URL', 'http://python-isolator.web:5000/execute') async def execute_timer_function_async(timer_function): """ @@ -30,9 +34,18 @@ async def execute_timer_function_async(timer_function): environment = timer_function['environment'] name = timer_function['name'] version_number = timer_function['version_number'] + runtime = timer_function.get('runtime', 'node') # Default to node if not specified + + # Select the appropriate API URL based on runtime + if runtime == 'deno': + api_url = DENO_API_URL + elif runtime == 'python': + api_url = PYTHON_API_URL + else: + api_url = NODE_API_URL async with aiohttp.ClientSession() as session: - async with session.post(API_URL, json={ + async with session.post(api_url, json={ 'code': code, 'request': {'method': 'TIMER'}, 'environment': environment, @@ -93,7 +106,7 @@ def check_and_execute_timer_functions(): SELECT id, name, code, environment, version_number, trigger_type, frequency_minutes, run_date, - next_run, enabled, + next_run, enabled, runtime, EXTRACT(EPOCH FROM (NOW() - next_run)) as seconds_since_next_run FROM timer_functions WHERE enabled = true @@ -139,4 +152,4 @@ if __name__ == '__main__': try: asyncio.get_event_loop().run_forever() except (KeyboardInterrupt, SystemExit): - pass \ No newline at end of file + pass \ No newline at end of file