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