From 1048f4af45c845d9b7a1a38beaf96d48dce7437d Mon Sep 17 00:00:00 2001 From: Tykayn Date: Sun, 21 Sep 2025 16:57:24 +0200 Subject: [PATCH] up static routes --- Makefile | 7 +- backend.py | 6 + doc/demo_endpoint.md | 25 +- oedb/resources/demo/demo_main.py | 44 + oedb/resources/demo/demo_traffic.py | 712 +--------- oedb/resources/demo/demo_view_events.py | 413 +----- oedb/resources/demo/static/demo_auth.js | 270 ++++ oedb/resources/demo/static/demo_styles.css | 421 ++++++ oedb/resources/demo/templates/traffic.html | 512 +++++++ .../resources/demo/templates/view_events.html | 284 ++++ requirements.txt | 1 + test_app_init.py | 16 + test_marker.html | 80 ++ uwsgi.log | 1244 +++++++++++++++++ 14 files changed, 2959 insertions(+), 1076 deletions(-) create mode 100644 oedb/resources/demo/static/demo_auth.js create mode 100644 oedb/resources/demo/static/demo_styles.css create mode 100644 oedb/resources/demo/templates/traffic.html create mode 100644 oedb/resources/demo/templates/view_events.html create mode 100644 test_app_init.py create mode 100644 test_marker.html create mode 100644 uwsgi.log diff --git a/Makefile b/Makefile index b56dc27..3ccb394 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,10 @@ default: start dev: start +# Use PORT environment variable if set, otherwise default to 8080 +PORT ?= 8080 +# Log file for daemonized uWSGI +LOGFILE ?= uwsgi.log + start: python3 -m venv venv - . venv/bin/activate && pip install -r requirements.txt && uwsgi --http :8080 --wsgi-file backend.py --callable app \ No newline at end of file + . venv/bin/activate && pip install -r requirements.txt && uwsgi --http :$(PORT) --wsgi-file backend.py --callable app \ No newline at end of file diff --git a/backend.py b/backend.py index 7f36ad7..fb86c36 100644 --- a/backend.py +++ b/backend.py @@ -7,6 +7,7 @@ It initializes the Falcon application and sets up the routes. """ import sys +import os import falcon # Import utility modules @@ -41,6 +42,11 @@ def create_app(): RateLimitMiddleware() ]) + # Add static file serving + logger.info("Setting up static file serving") + static_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), 'oedb', 'resources', 'demo', 'static')) + app.add_static_route('/static/', static_dir) + # Check database connection before continuing if not check_db_connection(): logger.error("Cannot start server - PostgreSQL database is not responding") diff --git a/doc/demo_endpoint.md b/doc/demo_endpoint.md index 811b7de..1a41a26 100644 --- a/doc/demo_endpoint.md +++ b/doc/demo_endpoint.md @@ -93,17 +93,36 @@ The traffic jam reporting page (`/demo/traffic`) provides a specialized form for #### OpenStreetMap Authentication -The traffic jam reporting page includes OAuth2 authentication with OpenStreetMap: +All demo pages include OAuth2 authentication with OpenStreetMap: -- Users can authenticate with their OpenStreetMap account +- Users can authenticate with their OpenStreetMap account on any demo page +- Authentication state is shared across all demo pages using localStorage - After authentication, the user's OSM username and a link to their profile are displayed -- When submitting a traffic jam report, the OSM username is included in the event properties as `reporter:osm` +- When submitting reports or creating events, the OSM username is included in the event properties as `reporter:osm` - OAuth2 configuration parameters are stored in the `.env` file: - `CLIENT_ID`: The OAuth2 client ID for the application - `CLIENT_SECRET`: The OAuth2 client secret for the application - `CLIENT_AUTORIZATIONS`: The permissions requested (default: "read_prefs") - `CLIENT_REDIRECT`: The redirect URL after authentication +#### Common Styling + +All demo pages share a common CSS style for consistent look and feel: + +- Common CSS file located at `/static/demo/demo_styles.css` +- Improved styling for the OpenStreetMap login button +- Consistent styling for forms, buttons, and other UI elements +- Responsive design for better mobile experience + +#### JavaScript Modules + +The demo pages use JavaScript modules for shared functionality: + +- Authentication module located at `/static/demo/demo_auth.js` +- Handles OAuth2 authentication flow with OpenStreetMap +- Stores and retrieves authentication information in localStorage +- Provides methods for checking authentication status and getting user information + ## Future Improvements Potential future improvements for the demo pages: diff --git a/oedb/resources/demo/demo_main.py b/oedb/resources/demo/demo_main.py index 8e91b16..d7484ca 100644 --- a/oedb/resources/demo/demo_main.py +++ b/oedb/resources/demo/demo_main.py @@ -26,6 +26,16 @@ class DemoMainResource: # Set content type to HTML resp.content_type = 'text/html' + # Load environment variables from .env file for OAuth2 configuration + from oedb.utils.db import load_env_from_file + load_env_from_file() + + # Get OAuth2 configuration parameters + import os + client_id = os.getenv("CLIENT_ID", "") + client_secret = os.getenv("CLIENT_SECRET", "") + client_redirect = os.getenv("CLIENT_REDIRECT", "") + # Create HTML response with MapLibre map html = """ @@ -37,7 +47,9 @@ class DemoMainResource: + + - - - -
- - -

Report Road Issue

- -
-

OpenStreetMap Authentication

- """ - - # Add authentication section based on authentication status - if is_authenticated: - auth_section = f""" -
-
-

Logged in as {osm_username}

-

View OSM Profile

- - -
-
- """ - else: - auth_section = f""" -

Authenticate with your OpenStreetMap account to include your username in the traffic report.

- - """ - - # Add the rest of the HTML template - html_footer = """ -
- -

Select Issue Type

-
-
- - Pothole -
-
- - Obstacle -
-
- - Vehicle on Side -
-
- - Danger -
-
- - - -
-
- - -
- - - -
-
- - -
- -
- - -
-
- -
-
- - -
- -
- - -
-
- -
- - -
- -
- -
-
Click on the map to set the issue location or use the "Get My Current Location" button
-
- - -
- -
- - - View All Saved Events on Map - -
- - - - - """ - - # Concatenate the HTML parts to form the complete template - html = html_header + auth_section + html_footer + # Load and render the template with the appropriate variables + template = self.jinja_env.get_template('traffic.html') + html = template.render( + client_id=client_id, + client_secret=client_secret, + client_redirect=client_redirect, + client_authorizations=client_authorizations, + is_authenticated=is_authenticated, + osm_username=osm_username, + osm_user_id=osm_user_id + ) # Set the response body and status resp.text = html diff --git a/oedb/resources/demo/demo_view_events.py b/oedb/resources/demo/demo_view_events.py index 6500d03..06bb1e1 100644 --- a/oedb/resources/demo/demo_view_events.py +++ b/oedb/resources/demo/demo_view_events.py @@ -2,8 +2,11 @@ View saved events resource for the OpenEventDatabase. """ +import os import falcon +import jinja2 from oedb.utils.logging import logger +from oedb.utils.db import load_env_from_file class DemoViewEventsResource: """ @@ -11,6 +14,17 @@ class DemoViewEventsResource: Handles the /demo/view-events endpoint. """ + def __init__(self): + """ + Initialize the resource with a Jinja2 environment. + """ + # Set up Jinja2 environment + template_dir = os.path.join(os.path.dirname(__file__), 'templates') + self.jinja_env = jinja2.Environment( + loader=jinja2.FileSystemLoader(template_dir), + autoescape=jinja2.select_autoescape(['html', 'xml']) + ) + def on_get(self, req, resp): """ Handle GET requests to the /demo/view-events endpoint. @@ -26,390 +40,21 @@ class DemoViewEventsResource: # Set content type to HTML resp.content_type = 'text/html' - # Create HTML response with MapLibre map - html = """ - - - - - - View Saved Events - OpenEventDatabase - - - - - - -
- -
-

Your Saved Events

- - - -
- -
- -
- - -
-
- - - - - """ + # Load environment variables from .env file for OAuth2 configuration + load_env_from_file() + + # Get OAuth2 configuration parameters + client_id = os.getenv("CLIENT_ID", "") + client_secret = os.getenv("CLIENT_SECRET", "") + client_redirect = os.getenv("CLIENT_REDIRECT", "") + + # Load and render the template with the appropriate variables + template = self.jinja_env.get_template('view_events.html') + html = template.render( + client_id=client_id, + client_secret=client_secret, + client_redirect=client_redirect + ) # Set the response body and status resp.text = html diff --git a/oedb/resources/demo/static/demo_auth.js b/oedb/resources/demo/static/demo_auth.js new file mode 100644 index 0000000..81fba57 --- /dev/null +++ b/oedb/resources/demo/static/demo_auth.js @@ -0,0 +1,270 @@ +/** + * OpenStreetMap OAuth2 authentication module for the OpenEventDatabase demo pages. + * This module handles authentication with OpenStreetMap and stores/retrieves auth info in localStorage. + */ + +// Constants +const OSM_AUTH_STORAGE_KEY = 'oedb_osm_auth'; + +/** + * OSM Authentication class + */ +class OSMAuth { + constructor() { + // Initialize auth state + this.isAuthenticated = false; + this.username = ''; + this.userId = ''; + + // Load auth info from localStorage + this.loadAuthInfo(); + } + + /** + * Load authentication information from localStorage + */ + loadAuthInfo() { + try { + const authInfo = localStorage.getItem(OSM_AUTH_STORAGE_KEY); + if (authInfo) { + const parsedAuthInfo = JSON.parse(authInfo); + this.isAuthenticated = true; + this.username = parsedAuthInfo.username || ''; + this.userId = parsedAuthInfo.userId || ''; + console.log('Loaded OSM auth info from localStorage:', this.username); + } + } catch (error) { + console.error('Error loading OSM auth info from localStorage:', error); + } + } + + /** + * Save authentication information to localStorage + * @param {string} username - The OSM username + * @param {string} userId - The OSM user ID + */ + saveAuthInfo(username, userId) { + try { + const authInfo = { + username: username, + userId: userId, + timestamp: new Date().toISOString() + }; + localStorage.setItem(OSM_AUTH_STORAGE_KEY, JSON.stringify(authInfo)); + this.isAuthenticated = true; + this.username = username; + this.userId = userId; + console.log('Saved OSM auth info to localStorage:', username); + } catch (error) { + console.error('Error saving OSM auth info to localStorage:', error); + } + } + + /** + * Clear authentication information from localStorage + */ + clearAuthInfo() { + try { + localStorage.removeItem(OSM_AUTH_STORAGE_KEY); + this.isAuthenticated = false; + this.username = ''; + this.userId = ''; + console.log('Cleared OSM auth info from localStorage'); + } catch (error) { + console.error('Error clearing OSM auth info from localStorage:', error); + } + } + + /** + * Check if the user is authenticated + * @returns {boolean} - True if the user is authenticated, false otherwise + */ + isUserAuthenticated() { + return this.isAuthenticated; + } + + /** + * Get the OSM username + * @returns {string} - The OSM username + */ + getUsername() { + return this.username; + } + + /** + * Get the OSM user ID + * @returns {string} - The OSM user ID + */ + getUserId() { + return this.userId; + } + + /** + * Render the authentication section + * @param {string} clientId - The OAuth2 client ID + * @param {string} redirectUri - The OAuth2 redirect URI + * @param {string} scope - The OAuth2 scope + * @returns {string} - The HTML for the authentication section + */ + renderAuthSection(clientId, redirectUri, scope = 'read_prefs') { + let html = '
'; + html += '

OpenStreetMap Authentication

'; + + if (this.isAuthenticated) { + html += '
'; + html += '
'; + html += `

Logged in as ${this.username}

`; + html += `

View OSM Profile

`; + html += ``; + html += ``; + html += '
'; + html += '
'; + } else { + html += '

Authenticate with your OpenStreetMap account to include your username in reports.

'; + html += `'; + } + + html += '
'; + return html; + } + + /** + * Process the OAuth2 callback + * @param {string} authCode - The authorization code from the callback + * @param {string} clientId - The OAuth2 client ID + * @param {string} clientSecret - The OAuth2 client secret + * @param {string} redirectUri - The OAuth2 redirect URI + * @returns {Promise} - A promise that resolves when the authentication is complete + */ + processAuthCallback(authCode, clientId, clientSecret, redirectUri) { + return new Promise((resolve, reject) => { + if (!authCode) { + reject(new Error('No authorization code provided')); + return; + } + + console.log('Processing OAuth2 callback with auth code:', authCode); + + // Exchange authorization code for access token + const tokenUrl = 'https://www.openstreetmap.org/oauth2/token'; + const tokenData = { + grant_type: 'authorization_code', + code: authCode, + redirect_uri: redirectUri, + client_id: clientId, + client_secret: clientSecret + }; + + // Make the request + fetch(tokenUrl, { + method: 'POST', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + body: new URLSearchParams(tokenData) + }) + .then(response => { + if (!response.ok) { + throw new Error(`Token request failed with status ${response.status}`); + } + return response.json(); + }) + .then(tokenInfo => { + const accessToken = tokenInfo.access_token; + if (!accessToken) { + throw new Error('No access token in response'); + } + + // Use access token to get user information + return fetch('https://api.openstreetmap.org/api/0.6/user/details.json', { + headers: { + 'Authorization': `Bearer ${accessToken}` + } + }); + }) + .then(response => { + if (!response.ok) { + throw new Error(`User details request failed with status ${response.status}`); + } + return response.json(); + }) + .then(userInfo => { + const user = userInfo.user || {}; + const username = user.display_name || ''; + const userId = user.id || ''; + + if (!username) { + throw new Error('No username in user details'); + } + + // Save auth info to localStorage + this.saveAuthInfo(username, userId); + + resolve({ + username: username, + userId: userId + }); + }) + .catch(error => { + console.error('Error during OAuth2 authentication:', error); + reject(error); + }); + }); + } +} + +// Create a global instance of the OSMAuth class +const osmAuth = new OSMAuth(); + +/** + * Initialize the authentication module + * This should be called when the page loads + */ +function initAuth() { + console.log('Initializing OSM auth module'); + + // Check if we have an authorization code in the URL + const urlParams = new URLSearchParams(window.location.search); + const authCode = urlParams.get('code'); + + if (authCode) { + console.log('Authorization code found in URL'); + + // Get OAuth2 configuration from the page + const clientId = document.getElementById('osmClientId')?.value || ''; + const clientSecret = document.getElementById('osmClientSecret')?.value || ''; + const redirectUri = document.getElementById('osmRedirectUri')?.value || ''; + + if (clientId && redirectUri) { + // Process the authorization code + osmAuth.processAuthCallback(authCode, clientId, clientSecret, redirectUri) + .then(userInfo => { + console.log('Authentication successful:', userInfo); + + // Remove the authorization code from the URL + const url = new URL(window.location.href); + url.searchParams.delete('code'); + url.searchParams.delete('state'); + window.history.replaceState({}, document.title, url.toString()); + + // Reload the page to update the UI + window.location.reload(); + }) + .catch(error => { + console.error('Authentication failed:', error); + }); + } else { + console.error('Missing OAuth2 configuration'); + } + } +} + +// Export the OSMAuth instance and helper functions +window.osmAuth = osmAuth; +window.initAuth = initAuth; + +// Initialize the auth module when the page loads +document.addEventListener('DOMContentLoaded', initAuth); \ No newline at end of file diff --git a/oedb/resources/demo/static/demo_styles.css b/oedb/resources/demo/static/demo_styles.css new file mode 100644 index 0000000..c5c5a91 --- /dev/null +++ b/oedb/resources/demo/static/demo_styles.css @@ -0,0 +1,421 @@ +/* + * Common CSS styles for all demo pages in the OpenEventDatabase + */ + +/* General styles */ +body { + margin: 0; + padding: 20px; + font-family: Arial, sans-serif; + background-color: #f5f5f5; +} + +.container { + max-width: 1000px; + margin: 0 auto; + background-color: white; + padding: 20px; + border-radius: 5px; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); +} + +h1 { + margin-top: 0; + color: #333; +} + +.form-group { + margin-bottom: 15px; +} + +label { + display: block; + margin-bottom: 5px; + font-weight: bold; +} + +input[type="text"], +input[type="datetime-local"], +select, +textarea { + width: 100%; + padding: 8px; + border: 1px solid #ddd; + border-radius: 4px; + box-sizing: border-box; + font-size: 14px; +} + +.required:after { + content: " *"; + color: red; +} + +.form-row { + display: flex; + gap: 15px; +} + +.form-row .form-group { + flex: 1; +} + +button { + background-color: #0078ff; + color: white; + border: none; + padding: 10px 15px; + border-radius: 4px; + cursor: pointer; + font-size: 16px; +} + +button:hover { + background-color: #0056b3; +} + +.note { + font-size: 12px; + color: #666; + margin-top: 5px; +} + +#map { + width: 100%; + height: 300px; + margin-bottom: 15px; + border-radius: 4px; +} + +#result { + margin-top: 20px; + padding: 10px; + border-radius: 4px; + display: none; +} + +#result.success { + background-color: #d4edda; + border: 1px solid #c3e6cb; + color: #155724; +} + +#result.error { + background-color: #f8d7da; + border: 1px solid #f5c6cb; + color: #721c24; +} + +.nav-links { + margin-bottom: 20px; +} + +.nav-links a { + color: #0078ff; + text-decoration: none; + margin-right: 15px; +} + +.nav-links a:hover { + text-decoration: underline; +} + +/* Authentication section styles */ +.auth-section { + background-color: #f8f9fa; + padding: 15px; + border-radius: 5px; + margin-bottom: 20px; + border: 1px solid #e9ecef; +} + +.auth-section h3 { + margin-top: 0; + margin-bottom: 10px; + color: #333; +} + +.auth-info { + display: flex; + align-items: center; + gap: 10px; +} + +.auth-info img { + width: 40px; + height: 40px; + border-radius: 50%; +} + +/* Improved OSM login button styling */ +.osm-login-btn { + background-color: #7ebc6f; + color: white; + display: inline-flex; + align-items: center; + gap: 8px; + padding: 10px 15px; + border-radius: 4px; + font-weight: bold; + text-decoration: none; + transition: all 0.2s ease; + border: none; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); +} + +.osm-login-btn:hover { + background-color: #6ba75e; + transform: translateY(-2px); + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15); +} + +.osm-logo { + width: 24px; + height: 24px; + background-image: url('data:image/svg+xml;utf8,'); + background-repeat: no-repeat; + background-position: center; +} + +/* Geolocation button styles */ +.geolocation-btn { + background-color: #28a745; + margin-bottom: 10px; +} + +.geolocation-btn:hover { + background-color: #218838; +} + +.loading { + display: inline-block; + width: 20px; + height: 20px; + border: 3px solid rgba(255,255,255,.3); + border-radius: 50%; + border-top-color: #fff; + animation: spin 1s ease-in-out infinite; + margin-right: 10px; + vertical-align: middle; +} + +@keyframes spin { + to { transform: rotate(360deg); } +} + +/* Issue buttons styles */ +.issue-buttons { + display: flex; + flex-wrap: wrap; + gap: 10px; + margin-bottom: 20px; +} + +.issue-button { + flex: 1; + min-width: 120px; + text-align: center; + padding: 15px 10px; + border-radius: 5px; + font-weight: bold; + cursor: pointer; + transition: all 0.2s ease; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 8px; +} + +.issue-button i { + font-size: 24px; +} + +.issue-button.pothole { + background-color: #ff9800; + color: white; +} + +.issue-button.obstacle { + background-color: #f44336; + color: white; +} + +.issue-button.vehicle { + background-color: #2196f3; + color: white; +} + +.issue-button.danger { + background-color: #9c27b0; + color: white; +} + +.issue-button:hover { + transform: translateY(-3px); + box-shadow: 0 4px 8px rgba(0,0,0,0.2); +} + +/* View saved events link */ +.view-saved-events { + display: block; + text-align: center; + margin-top: 20px; + padding: 10px; + background-color: #f8f9fa; + border-radius: 5px; + text-decoration: none; + color: #333; + border: 1px solid #ddd; +} + +.view-saved-events:hover { + background-color: #e9ecef; +} + +/* Map overlay styles */ +.map-overlay { + position: absolute; + top: 10px; + left: 10px; + background: rgba(255, 255, 255, 0.9); + padding: 15px; + border-radius: 5px; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); + max-width: 300px; + max-height: 90vh; + overflow-y: auto; +} + +.map-overlay h2 { + margin-top: 0; + margin-bottom: 10px; +} + +/* Event list styles */ +.event-list { + margin-top: 15px; + max-height: 60vh; + overflow-y: auto; +} + +.event-item { + padding: 10px; + border-bottom: 1px solid #eee; + cursor: pointer; +} + +.event-item:hover { + background-color: #f5f5f5; +} + +.event-item h3 { + margin: 0 0 5px 0; + font-size: 16px; +} + +.event-item p { + margin: 0; + font-size: 14px; + color: #666; +} + +.event-item .event-date { + font-size: 12px; + color: #999; +} + +.event-item .event-type { + display: inline-block; + padding: 2px 5px; + border-radius: 3px; + font-size: 12px; + color: white; + margin-right: 5px; +} + +.event-type.pothole { + background-color: #ff9800; +} + +.event-type.obstacle { + background-color: #f44336; +} + +.event-type.vehicle { + background-color: #2196f3; +} + +.event-type.danger { + background-color: #9c27b0; +} + +.event-type.traffic { + background-color: #ff3860; +} + +.event-type.other { + background-color: #777; +} + +.no-events { + padding: 15px; + background-color: #f8f9fa; + border-radius: 5px; + text-align: center; + color: #666; +} + +/* Controls styles */ +.controls { + margin-top: 15px; + display: flex; + gap: 10px; +} + +.controls button { + flex: 1; + padding: 8px; + background-color: #f8f9fa; + border: 1px solid #ddd; + border-radius: 4px; + cursor: pointer; +} + +.controls button:hover { + background-color: #e9ecef; +} + +.controls button.danger { + color: #dc3545; +} + +/* Popup styles */ +.popup-content { + max-width: 300px; +} + +.popup-content h3 { + margin-top: 0; + margin-bottom: 10px; +} + +.popup-content table { + width: 100%; + border-collapse: collapse; +} + +.popup-content table td { + padding: 4px; + border-bottom: 1px solid #eee; +} + +.popup-content table td:first-child { + font-weight: bold; + width: 40%; +} + +.osm-login-btn{ + padding: 1rem 2rem; + border-radius: 5px; +} \ No newline at end of file diff --git a/oedb/resources/demo/templates/traffic.html b/oedb/resources/demo/templates/traffic.html new file mode 100644 index 0000000..0621f2e --- /dev/null +++ b/oedb/resources/demo/templates/traffic.html @@ -0,0 +1,512 @@ + + + + + + Report Traffic Jam - OpenEventDatabase + + + + + + + +
+ + +

Report Road Issue

+ + + + + + + +
+ {% if is_authenticated %} +
+
+

Logged in as {{ osm_username }}

+

View OSM Profile

+ + +
+
+ {% else %} +

Authenticate with your OpenStreetMap account to include your username in the traffic report.

+ + {% endif %} + + +
+ +

Select Issue Type

+
+
+ + Pothole +
+
+ + Obstacle +
+
+ + Vehicle on Side +
+
+ + Danger +
+
+ + + +
+
+ + +
+ + + +
+
+ + +
+ +
+ + +
+
+ +
+
+ + +
+ +
+ + +
+
+ +
+ + +
+ +
+ +
+
Click on the map to set the issue location or use the "Get My Current Location" button
+
+ + +
+ +
+ + + View All Saved Events on Map + +
+ + + + \ No newline at end of file diff --git a/oedb/resources/demo/templates/view_events.html b/oedb/resources/demo/templates/view_events.html new file mode 100644 index 0000000..e5b5c42 --- /dev/null +++ b/oedb/resources/demo/templates/view_events.html @@ -0,0 +1,284 @@ + + + + + + View Saved Events - OpenEventDatabase + + + + + + + + +
+ + + + + + +
+

Your Saved Events

+ + + + +
+

OpenStreetMap Authentication

+

Authenticate with your OpenStreetMap account to include your username in reports.

+ + +
+ +
+ +
+ +
+ + +
+
+ + + + \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 5e1d4bf..718c51d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -7,3 +7,4 @@ pyproj==3.7.2 pytz==2025.2 Requests==2.32.5 waitress==3.0.2 +jinja2 \ No newline at end of file diff --git a/test_app_init.py b/test_app_init.py new file mode 100644 index 0000000..f07f882 --- /dev/null +++ b/test_app_init.py @@ -0,0 +1,16 @@ +#!/usr/bin/env python3 +""" +Test script to verify that the application initializes correctly. +""" + +import sys +from backend import create_app + +try: + print("Attempting to initialize the application...") + app = create_app() + print("Application initialized successfully!") + sys.exit(0) +except Exception as e: + print(f"Error initializing application: {e}") + sys.exit(1) \ No newline at end of file diff --git a/test_marker.html b/test_marker.html new file mode 100644 index 0000000..47e586f --- /dev/null +++ b/test_marker.html @@ -0,0 +1,80 @@ + + + + + + MapLibre Marker Test + + + + + +
+
+

Test Marker Color Change

+ + + + +
+ + + + \ No newline at end of file diff --git a/uwsgi.log b/uwsgi.log new file mode 100644 index 0000000..ba68021 --- /dev/null +++ b/uwsgi.log @@ -0,0 +1,1244 @@ +*** Starting uWSGI 2.0.30 (64bit) on [Sun Sep 21 15:45:47 2025] *** +compiled with version: 13.3.0 on 16 September 2025 12:23:28 +os: Linux-6.8.0-79-generic #79-Ubuntu SMP PREEMPT_DYNAMIC Tue Aug 12 14:42:46 UTC 2025 +nodename: nova +machine: x86_64 +clock source: unix +pcre jit disabled +detected number of CPU cores: 8 +current working directory: /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend +detected binary path: /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/bin/uwsgi +your processes number limit is 63010 +your memory page size is 4096 bytes +detected max file descriptor number: 1048576 +lock engine: pthread robust mutexes +thunder lock: disabled (you can enable it with --thunder-lock) +*** RRDtool library available at 0x59282ec98080 *** +uWSGI http bound on :8081 fd 4 +uwsgi socket 0 bound to TCP address 127.0.0.1:39873 (port auto-assigned) fd 3 +Python version: 3.12.3 (main, Aug 14 2025, 17:47:21) [GCC 13.3.0] +Python main interpreter initialized at 0x7d30b1ea39e8 +python threads support enabled +your server socket listen backlog is limited to 100 connections +your mercy for graceful operations on workers is 60 seconds +mapped 145840 bytes (142 KB) for 1 cores +*** Operational MODE: single process *** +INFO: Initializing Falcon application +2025-09-21 15:45:47,948 [OEDB] [INFO] Initializing Falcon application +INFO: Rate limiting initialized: 60 requests per 60 seconds +2025-09-21 15:45:47,948 [OEDB] [INFO] Rate limiting initialized: 60 requests per 60 seconds +INFO: Loading environment variables from /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/.env... +2025-09-21 15:45:47,951 [OEDB] [INFO] Loading environment variables from /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/.env... +DEBUG: Connecting to database: oedb on localhost as user cipherbliss +DEBUG: Using TCP/IP connection with additional parameters +SUCCESS: Successfully connected to PostgreSQL database +2025-09-21 15:45:47,956 [OEDB] [INFO] SUCCESS: Successfully connected to PostgreSQL database +INFO: Setting up API routes +2025-09-21 15:45:47,957 [OEDB] [INFO] Setting up API routes +SUCCESS: Application initialized successfully +2025-09-21 15:45:47,957 [OEDB] [INFO] SUCCESS: Application initialized successfully +WSGI app 0 (mountpoint='') ready in 0 seconds on interpreter 0x7d30b1ea39e8 pid: 246775 (default app) +*** uWSGI is running in multiple interpreter mode *** +spawned uWSGI master process (pid: 246775) +spawned uWSGI worker 1 (pid: 246949, cores: 1) +spawned uWSGI http 1 (pid: 246950) +*** Starting uWSGI 2.0.30 (64bit) on [Sun Sep 21 15:51:26 2025] *** +compiled with version: 13.3.0 on 16 September 2025 12:23:28 +os: Linux-6.8.0-79-generic #79-Ubuntu SMP PREEMPT_DYNAMIC Tue Aug 12 14:42:46 UTC 2025 +nodename: nova +machine: x86_64 +clock source: unix +pcre jit disabled +detected number of CPU cores: 8 +current working directory: /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend +detected binary path: /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/bin/uwsgi +your processes number limit is 63010 +your memory page size is 4096 bytes +detected max file descriptor number: 1048576 +lock engine: pthread robust mutexes +thunder lock: disabled (you can enable it with --thunder-lock) +*** RRDtool library available at 0x57fc83368e80 *** +uWSGI http bound on :8080 fd 4 +uwsgi socket 0 bound to TCP address 127.0.0.1:43967 (port auto-assigned) fd 3 +Python version: 3.12.3 (main, Aug 14 2025, 17:47:21) [GCC 13.3.0] +Python main interpreter initialized at 0x786beeaa39e8 +python threads support enabled +your server socket listen backlog is limited to 100 connections +your mercy for graceful operations on workers is 60 seconds +mapped 145840 bytes (142 KB) for 1 cores +*** Operational MODE: single process *** +INFO: Initializing Falcon application +2025-09-21 15:51:26,491 [OEDB] [INFO] Initializing Falcon application +INFO: Rate limiting initialized: 60 requests per 60 seconds +2025-09-21 15:51:26,491 [OEDB] [INFO] Rate limiting initialized: 60 requests per 60 seconds +INFO: Loading environment variables from /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/.env... +2025-09-21 15:51:26,494 [OEDB] [INFO] Loading environment variables from /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/.env... +DEBUG: Connecting to database: oedb on localhost as user cipherbliss +DEBUG: Using TCP/IP connection with additional parameters +SUCCESS: Successfully connected to PostgreSQL database +2025-09-21 15:51:26,499 [OEDB] [INFO] SUCCESS: Successfully connected to PostgreSQL database +INFO: Setting up API routes +2025-09-21 15:51:26,499 [OEDB] [INFO] Setting up API routes +SUCCESS: Application initialized successfully +2025-09-21 15:51:26,500 [OEDB] [INFO] SUCCESS: Application initialized successfully +WSGI app 0 (mountpoint='') ready in 0 seconds on interpreter 0x786beeaa39e8 pid: 249998 (default app) +*** uWSGI is running in multiple interpreter mode *** +spawned uWSGI master process (pid: 249998) +spawned uWSGI worker 1 (pid: 250037, cores: 1) +spawned uWSGI http 1 (pid: 250038) +*** Starting uWSGI 2.0.30 (64bit) on [Sun Sep 21 15:51:35 2025] *** +compiled with version: 13.3.0 on 16 September 2025 12:23:28 +os: Linux-6.8.0-79-generic #79-Ubuntu SMP PREEMPT_DYNAMIC Tue Aug 12 14:42:46 UTC 2025 +nodename: nova +machine: x86_64 +clock source: unix +pcre jit disabled +detected number of CPU cores: 8 +current working directory: /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend +detected binary path: /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/bin/uwsgi +your processes number limit is 63010 +your memory page size is 4096 bytes +detected max file descriptor number: 1048576 +lock engine: pthread robust mutexes +thunder lock: disabled (you can enable it with --thunder-lock) +*** RRDtool library available at 0x59f0903dfe80 *** +probably another instance of uWSGI is running on the same address (:8081). +bind(): Address already in use [core/socket.c line 769] +gateway "uWSGI http 1" has been buried (pid: 246950) +gateway "uWSGI http 1" has been buried (pid: 250038) +...brutally killing workers... +...brutally killing workers... +worker 1 buried after 1 seconds +worker 1 buried after 1 seconds +binary reloading uWSGI... +chdir() to /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend +binary reloading uWSGI... +closing all non-uwsgi socket fds > 2 (max_fd = 1048576)... +chdir() to /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend +found fd 3 mapped to socket 0 (127.0.0.1:39873) +closing all non-uwsgi socket fds > 2 (max_fd = 1048576)... +found fd 3 mapped to socket 0 (127.0.0.1:43967) +running /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/bin/uwsgi +running /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/bin/uwsgi +*** Starting uWSGI 2.0.30 (64bit) on [Sun Sep 21 15:51:45 2025] *** +compiled with version: 13.3.0 on 16 September 2025 12:23:28 +os: Linux-6.8.0-79-generic #79-Ubuntu SMP PREEMPT_DYNAMIC Tue Aug 12 14:42:46 UTC 2025 +nodename: nova +machine: x86_64 +clock source: unix +pcre jit disabled +detected number of CPU cores: 8 +current working directory: /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend +detected binary path: /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/bin/uwsgi +your processes number limit is 63010 +your memory page size is 4096 bytes +detected max file descriptor number: 1048576 +lock engine: pthread robust mutexes +thunder lock: disabled (you can enable it with --thunder-lock) +*** Starting uWSGI 2.0.30 (64bit) on [Sun Sep 21 15:51:45 2025] *** +compiled with version: 13.3.0 on 16 September 2025 12:23:28 +os: Linux-6.8.0-79-generic #79-Ubuntu SMP PREEMPT_DYNAMIC Tue Aug 12 14:42:46 UTC 2025 +nodename: nova +machine: x86_64 +clock source: unix +pcre jit disabled +detected number of CPU cores: 8 +current working directory: /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend +detected binary path: /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/bin/uwsgi +your processes number limit is 63010 +your memory page size is 4096 bytes +detected max file descriptor number: 1048576 +lock engine: pthread robust mutexes +thunder lock: disabled (you can enable it with --thunder-lock) +*** RRDtool library available at 0x561ce842bc10 *** +uWSGI http bound on :8080 fd 5 +*** RRDtool library available at 0x64a9ca6dedb0 *** +uWSGI http bound on :8081 fd 5 +uwsgi socket 0 bound to TCP address 127.0.0.1:40989 (port auto-assigned) fd 4 +Python version: 3.12.3 (main, Aug 14 2025, 17:47:21) [GCC 13.3.0] +Python main interpreter initialized at 0x75faa58a39e8 +python threads support enabled +your server socket listen backlog is limited to 100 connections +your mercy for graceful operations on workers is 60 seconds +mapped 145840 bytes (142 KB) for 1 cores +*** Operational MODE: single process *** +uwsgi socket 0 bound to TCP address 127.0.0.1:43375 (port auto-assigned) fd 4 +Python version: 3.12.3 (main, Aug 14 2025, 17:47:21) [GCC 13.3.0] +Python main interpreter initialized at 0x7e6d0fca39e8 +python threads support enabled +your server socket listen backlog is limited to 100 connections +your mercy for graceful operations on workers is 60 seconds +mapped 145840 bytes (142 KB) for 1 cores +*** Operational MODE: single process *** +INFO: Initializing Falcon application +2025-09-21 15:51:45,675 [OEDB] [INFO] Initializing Falcon application +INFO: Rate limiting initialized: 60 requests per 60 seconds +2025-09-21 15:51:45,675 [OEDB] [INFO] Rate limiting initialized: 60 requests per 60 seconds +INFO: Loading environment variables from /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/.env... +2025-09-21 15:51:45,678 [OEDB] [INFO] Loading environment variables from /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/.env... +DEBUG: Connecting to database: oedb on localhost as user cipherbliss +DEBUG: Using TCP/IP connection with additional parameters +SUCCESS: Successfully connected to PostgreSQL database +2025-09-21 15:51:45,682 [OEDB] [INFO] SUCCESS: Successfully connected to PostgreSQL database +INFO: Setting up API routes +2025-09-21 15:51:45,682 [OEDB] [INFO] Setting up API routes +SUCCESS: Application initialized successfully +2025-09-21 15:51:45,683 [OEDB] [INFO] SUCCESS: Application initialized successfully +WSGI app 0 (mountpoint='') ready in 0 seconds on interpreter 0x75faa58a39e8 pid: 249998 (default app) +*** uWSGI is running in multiple interpreter mode *** +gracefully (RE)spawned uWSGI master process (pid: 249998) +spawned uWSGI worker 1 (pid: 250232, cores: 1) +spawned uWSGI http 1 (pid: 250233) +INFO: Initializing Falcon application +2025-09-21 15:51:45,688 [OEDB] [INFO] Initializing Falcon application +INFO: Rate limiting initialized: 60 requests per 60 seconds +2025-09-21 15:51:45,688 [OEDB] [INFO] Rate limiting initialized: 60 requests per 60 seconds +INFO: Loading environment variables from /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/.env... +2025-09-21 15:51:45,691 [OEDB] [INFO] Loading environment variables from /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/.env... +DEBUG: Connecting to database: oedb on localhost as user cipherbliss +DEBUG: Using TCP/IP connection with additional parameters +SUCCESS: Successfully connected to PostgreSQL database +2025-09-21 15:51:45,695 [OEDB] [INFO] SUCCESS: Successfully connected to PostgreSQL database +INFO: Setting up API routes +2025-09-21 15:51:45,695 [OEDB] [INFO] Setting up API routes +SUCCESS: Application initialized successfully +2025-09-21 15:51:45,696 [OEDB] [INFO] SUCCESS: Application initialized successfully +WSGI app 0 (mountpoint='') ready in 0 seconds on interpreter 0x7e6d0fca39e8 pid: 246775 (default app) +*** uWSGI is running in multiple interpreter mode *** +gracefully (RE)spawned uWSGI master process (pid: 246775) +spawned uWSGI worker 1 (pid: 250235, cores: 1) +spawned uWSGI http 1 (pid: 250236) +*** Starting uWSGI 2.0.30 (64bit) on [Sun Sep 21 15:51:46 2025] *** +compiled with version: 13.3.0 on 16 September 2025 12:23:28 +os: Linux-6.8.0-79-generic #79-Ubuntu SMP PREEMPT_DYNAMIC Tue Aug 12 14:42:46 UTC 2025 +nodename: nova +machine: x86_64 +clock source: unix +pcre jit disabled +detected number of CPU cores: 8 +current working directory: /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend +detected binary path: /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/bin/uwsgi +your processes number limit is 63010 +your memory page size is 4096 bytes +detected max file descriptor number: 1048576 +lock engine: pthread robust mutexes +thunder lock: disabled (you can enable it with --thunder-lock) +*** RRDtool library available at 0x59b80b7ade80 *** +probably another instance of uWSGI is running on the same address (:8081). +bind(): Address already in use [core/socket.c line 769] +gateway "uWSGI http 1" has been buried (pid: 250236) +...brutally killing workers... +worker 1 buried after 1 seconds +binary reloading uWSGI... +chdir() to /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend +closing all non-uwsgi socket fds > 2 (max_fd = 1048576)... +found fd 4 mapped to socket 0 (127.0.0.1:43375) +running /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/bin/uwsgi +*** Starting uWSGI 2.0.30 (64bit) on [Sun Sep 21 15:52:24 2025] *** +compiled with version: 13.3.0 on 16 September 2025 12:23:28 +os: Linux-6.8.0-79-generic #79-Ubuntu SMP PREEMPT_DYNAMIC Tue Aug 12 14:42:46 UTC 2025 +nodename: nova +machine: x86_64 +clock source: unix +pcre jit disabled +detected number of CPU cores: 8 +current working directory: /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend +detected binary path: /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/bin/uwsgi +your processes number limit is 63010 +your memory page size is 4096 bytes +detected max file descriptor number: 1048576 +lock engine: pthread robust mutexes +thunder lock: disabled (you can enable it with --thunder-lock) +*** RRDtool library available at 0x63453aa35db0 *** +uWSGI http bound on :8081 fd 5 +uwsgi socket 0 bound to TCP address 127.0.0.1:33703 (port auto-assigned) fd 3 +Python version: 3.12.3 (main, Aug 14 2025, 17:47:21) [GCC 13.3.0] +Python main interpreter initialized at 0x7b33bf0a39e8 +python threads support enabled +your server socket listen backlog is limited to 100 connections +your mercy for graceful operations on workers is 60 seconds +mapped 145840 bytes (142 KB) for 1 cores +*** Operational MODE: single process *** +INFO: Initializing Falcon application +2025-09-21 15:52:24,990 [OEDB] [INFO] Initializing Falcon application +INFO: Rate limiting initialized: 60 requests per 60 seconds +2025-09-21 15:52:24,990 [OEDB] [INFO] Rate limiting initialized: 60 requests per 60 seconds +INFO: Loading environment variables from /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/.env... +2025-09-21 15:52:24,993 [OEDB] [INFO] Loading environment variables from /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/.env... +DEBUG: Connecting to database: oedb on localhost as user cipherbliss +DEBUG: Using TCP/IP connection with additional parameters +SUCCESS: Successfully connected to PostgreSQL database +2025-09-21 15:52:24,997 [OEDB] [INFO] SUCCESS: Successfully connected to PostgreSQL database +INFO: Setting up API routes +2025-09-21 15:52:24,997 [OEDB] [INFO] Setting up API routes +SUCCESS: Application initialized successfully +2025-09-21 15:52:24,998 [OEDB] [INFO] SUCCESS: Application initialized successfully +WSGI app 0 (mountpoint='') ready in 0 seconds on interpreter 0x7b33bf0a39e8 pid: 246775 (default app) +*** uWSGI is running in multiple interpreter mode *** +gracefully (RE)spawned uWSGI master process (pid: 246775) +spawned uWSGI worker 1 (pid: 250541, cores: 1) +spawned uWSGI http 1 (pid: 250542) +gateway "uWSGI http 1" has been buried (pid: 250542) +...brutally killing workers... +worker 1 buried after 1 seconds +binary reloading uWSGI... +chdir() to /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend +closing all non-uwsgi socket fds > 2 (max_fd = 1048576)... +found fd 3 mapped to socket 0 (127.0.0.1:33703) +running /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/bin/uwsgi +*** Starting uWSGI 2.0.30 (64bit) on [Sun Sep 21 15:52:28 2025] *** +compiled with version: 13.3.0 on 16 September 2025 12:23:28 +os: Linux-6.8.0-79-generic #79-Ubuntu SMP PREEMPT_DYNAMIC Tue Aug 12 14:42:46 UTC 2025 +nodename: nova +machine: x86_64 +clock source: unix +pcre jit disabled +detected number of CPU cores: 8 +current working directory: /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend +detected binary path: /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/bin/uwsgi +your processes number limit is 63010 +your memory page size is 4096 bytes +detected max file descriptor number: 1048576 +lock engine: pthread robust mutexes +thunder lock: disabled (you can enable it with --thunder-lock) +*** RRDtool library available at 0x58bfb68e8db0 *** +uWSGI http bound on :8081 fd 5 +uwsgi socket 0 bound to TCP address 127.0.0.1:39981 (port auto-assigned) fd 4 +Python version: 3.12.3 (main, Aug 14 2025, 17:47:21) [GCC 13.3.0] +Python main interpreter initialized at 0x7bf7eb0a39e8 +python threads support enabled +your server socket listen backlog is limited to 100 connections +your mercy for graceful operations on workers is 60 seconds +mapped 145840 bytes (142 KB) for 1 cores +*** Operational MODE: single process *** +INFO: Initializing Falcon application +2025-09-21 15:52:29,124 [OEDB] [INFO] Initializing Falcon application +INFO: Rate limiting initialized: 60 requests per 60 seconds +2025-09-21 15:52:29,125 [OEDB] [INFO] Rate limiting initialized: 60 requests per 60 seconds +INFO: Loading environment variables from /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/.env... +2025-09-21 15:52:29,127 [OEDB] [INFO] Loading environment variables from /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/.env... +DEBUG: Connecting to database: oedb on localhost as user cipherbliss +DEBUG: Using TCP/IP connection with additional parameters +SUCCESS: Successfully connected to PostgreSQL database +2025-09-21 15:52:29,131 [OEDB] [INFO] SUCCESS: Successfully connected to PostgreSQL database +INFO: Setting up API routes +2025-09-21 15:52:29,131 [OEDB] [INFO] Setting up API routes +SUCCESS: Application initialized successfully +2025-09-21 15:52:29,132 [OEDB] [INFO] SUCCESS: Application initialized successfully +WSGI app 0 (mountpoint='') ready in 1 seconds on interpreter 0x7bf7eb0a39e8 pid: 246775 (default app) +*** uWSGI is running in multiple interpreter mode *** +gracefully (RE)spawned uWSGI master process (pid: 246775) +spawned uWSGI worker 1 (pid: 250554, cores: 1) +spawned uWSGI http 1 (pid: 250555) +gateway "uWSGI http 1" has been buried (pid: 250233) +...brutally killing workers... +worker 1 buried after 1 seconds +binary reloading uWSGI... +chdir() to /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend +closing all non-uwsgi socket fds > 2 (max_fd = 1048576)... +found fd 4 mapped to socket 0 (127.0.0.1:40989) +running /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/bin/uwsgi +*** Starting uWSGI 2.0.30 (64bit) on [Sun Sep 21 15:52:33 2025] *** +compiled with version: 13.3.0 on 16 September 2025 12:23:28 +os: Linux-6.8.0-79-generic #79-Ubuntu SMP PREEMPT_DYNAMIC Tue Aug 12 14:42:46 UTC 2025 +nodename: nova +machine: x86_64 +clock source: unix +pcre jit disabled +detected number of CPU cores: 8 +current working directory: /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend +detected binary path: /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/bin/uwsgi +your processes number limit is 63010 +your memory page size is 4096 bytes +detected max file descriptor number: 1048576 +lock engine: pthread robust mutexes +thunder lock: disabled (you can enable it with --thunder-lock) +*** RRDtool library available at 0x5a43edfd7c10 *** +uWSGI http bound on :8080 fd 5 +uwsgi socket 0 bound to TCP address 127.0.0.1:43959 (port auto-assigned) fd 3 +Python version: 3.12.3 (main, Aug 14 2025, 17:47:21) [GCC 13.3.0] +Python main interpreter initialized at 0x727fd8ea39e8 +python threads support enabled +your server socket listen backlog is limited to 100 connections +your mercy for graceful operations on workers is 60 seconds +mapped 145840 bytes (142 KB) for 1 cores +*** Operational MODE: single process *** +INFO: Initializing Falcon application +2025-09-21 15:52:33,614 [OEDB] [INFO] Initializing Falcon application +INFO: Rate limiting initialized: 60 requests per 60 seconds +2025-09-21 15:52:33,614 [OEDB] [INFO] Rate limiting initialized: 60 requests per 60 seconds +INFO: Loading environment variables from /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/.env... +2025-09-21 15:52:33,617 [OEDB] [INFO] Loading environment variables from /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/.env... +DEBUG: Connecting to database: oedb on localhost as user cipherbliss +DEBUG: Using TCP/IP connection with additional parameters +SUCCESS: Successfully connected to PostgreSQL database +2025-09-21 15:52:33,621 [OEDB] [INFO] SUCCESS: Successfully connected to PostgreSQL database +INFO: Setting up API routes +2025-09-21 15:52:33,621 [OEDB] [INFO] Setting up API routes +SUCCESS: Application initialized successfully +2025-09-21 15:52:33,622 [OEDB] [INFO] SUCCESS: Application initialized successfully +WSGI app 0 (mountpoint='') ready in 0 seconds on interpreter 0x727fd8ea39e8 pid: 249998 (default app) +*** uWSGI is running in multiple interpreter mode *** +gracefully (RE)spawned uWSGI master process (pid: 249998) +spawned uWSGI worker 1 (pid: 250601, cores: 1) +spawned uWSGI http 1 (pid: 250602) +gateway "uWSGI http 1" has been buried (pid: 250555) +...brutally killing workers... +worker 1 buried after 1 seconds +binary reloading uWSGI... +chdir() to /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend +closing all non-uwsgi socket fds > 2 (max_fd = 1048576)... +found fd 4 mapped to socket 0 (127.0.0.1:39981) +running /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/bin/uwsgi +*** Starting uWSGI 2.0.30 (64bit) on [Sun Sep 21 15:52:35 2025] *** +compiled with version: 13.3.0 on 16 September 2025 12:23:28 +os: Linux-6.8.0-79-generic #79-Ubuntu SMP PREEMPT_DYNAMIC Tue Aug 12 14:42:46 UTC 2025 +nodename: nova +machine: x86_64 +clock source: unix +pcre jit disabled +detected number of CPU cores: 8 +current working directory: /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend +detected binary path: /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/bin/uwsgi +your processes number limit is 63010 +your memory page size is 4096 bytes +detected max file descriptor number: 1048576 +lock engine: pthread robust mutexes +thunder lock: disabled (you can enable it with --thunder-lock) +*** RRDtool library available at 0x56039b005db0 *** +uWSGI http bound on :8081 fd 5 +uwsgi socket 0 bound to TCP address 127.0.0.1:45391 (port auto-assigned) fd 3 +Python version: 3.12.3 (main, Aug 14 2025, 17:47:21) [GCC 13.3.0] +Python main interpreter initialized at 0x727a546a39e8 +python threads support enabled +your server socket listen backlog is limited to 100 connections +your mercy for graceful operations on workers is 60 seconds +mapped 145840 bytes (142 KB) for 1 cores +*** Operational MODE: single process *** +INFO: Initializing Falcon application +2025-09-21 15:52:36,278 [OEDB] [INFO] Initializing Falcon application +INFO: Rate limiting initialized: 60 requests per 60 seconds +2025-09-21 15:52:36,279 [OEDB] [INFO] Rate limiting initialized: 60 requests per 60 seconds +INFO: Loading environment variables from /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/.env... +2025-09-21 15:52:36,281 [OEDB] [INFO] Loading environment variables from /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/.env... +DEBUG: Connecting to database: oedb on localhost as user cipherbliss +DEBUG: Using TCP/IP connection with additional parameters +SUCCESS: Successfully connected to PostgreSQL database +2025-09-21 15:52:36,285 [OEDB] [INFO] SUCCESS: Successfully connected to PostgreSQL database +INFO: Setting up API routes +2025-09-21 15:52:36,285 [OEDB] [INFO] Setting up API routes +SUCCESS: Application initialized successfully +2025-09-21 15:52:36,286 [OEDB] [INFO] SUCCESS: Application initialized successfully +WSGI app 0 (mountpoint='') ready in 0 seconds on interpreter 0x727a546a39e8 pid: 246775 (default app) +*** uWSGI is running in multiple interpreter mode *** +gracefully (RE)spawned uWSGI master process (pid: 246775) +spawned uWSGI worker 1 (pid: 250614, cores: 1) +spawned uWSGI http 1 (pid: 250615) +gateway "uWSGI http 1" has been buried (pid: 250615) +...brutally killing workers... +worker 1 buried after 1 seconds +binary reloading uWSGI... +chdir() to /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend +closing all non-uwsgi socket fds > 2 (max_fd = 1048576)... +found fd 3 mapped to socket 0 (127.0.0.1:45391) +running /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/bin/uwsgi +*** Starting uWSGI 2.0.30 (64bit) on [Sun Sep 21 15:52:39 2025] *** +compiled with version: 13.3.0 on 16 September 2025 12:23:28 +os: Linux-6.8.0-79-generic #79-Ubuntu SMP PREEMPT_DYNAMIC Tue Aug 12 14:42:46 UTC 2025 +nodename: nova +machine: x86_64 +clock source: unix +pcre jit disabled +detected number of CPU cores: 8 +current working directory: /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend +detected binary path: /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/bin/uwsgi +your processes number limit is 63010 +your memory page size is 4096 bytes +detected max file descriptor number: 1048576 +lock engine: pthread robust mutexes +thunder lock: disabled (you can enable it with --thunder-lock) +*** RRDtool library available at 0x5b1801e98db0 *** +uWSGI http bound on :8081 fd 5 +uwsgi socket 0 bound to TCP address 127.0.0.1:33141 (port auto-assigned) fd 4 +Python version: 3.12.3 (main, Aug 14 2025, 17:47:21) [GCC 13.3.0] +Python main interpreter initialized at 0x7a439d6a39e8 +python threads support enabled +your server socket listen backlog is limited to 100 connections +your mercy for graceful operations on workers is 60 seconds +mapped 145840 bytes (142 KB) for 1 cores +*** Operational MODE: single process *** +INFO: Initializing Falcon application +2025-09-21 15:52:39,930 [OEDB] [INFO] Initializing Falcon application +INFO: Rate limiting initialized: 60 requests per 60 seconds +2025-09-21 15:52:39,931 [OEDB] [INFO] Rate limiting initialized: 60 requests per 60 seconds +INFO: Loading environment variables from /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/.env... +2025-09-21 15:52:39,933 [OEDB] [INFO] Loading environment variables from /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/.env... +DEBUG: Connecting to database: oedb on localhost as user cipherbliss +DEBUG: Using TCP/IP connection with additional parameters +SUCCESS: Successfully connected to PostgreSQL database +2025-09-21 15:52:39,938 [OEDB] [INFO] SUCCESS: Successfully connected to PostgreSQL database +INFO: Setting up API routes +2025-09-21 15:52:39,938 [OEDB] [INFO] Setting up API routes +SUCCESS: Application initialized successfully +2025-09-21 15:52:39,938 [OEDB] [INFO] SUCCESS: Application initialized successfully +WSGI app 0 (mountpoint='') ready in 0 seconds on interpreter 0x7a439d6a39e8 pid: 246775 (default app) +*** uWSGI is running in multiple interpreter mode *** +gracefully (RE)spawned uWSGI master process (pid: 246775) +spawned uWSGI worker 1 (pid: 250626, cores: 1) +spawned uWSGI http 1 (pid: 250627) +Sun Sep 21 15:52:43 2025 - uWSGI worker 1 error: the master disconnected from this worker. Shutting down the worker. +Sun Sep 21 15:52:45 2025 - uWSGI worker 1 error: the master disconnected from this worker. Shutting down the worker. +*** Starting uWSGI 2.0.30 (64bit) on [Sun Sep 21 15:52:51 2025] *** +compiled with version: 13.3.0 on 16 September 2025 12:23:28 +os: Linux-6.8.0-79-generic #79-Ubuntu SMP PREEMPT_DYNAMIC Tue Aug 12 14:42:46 UTC 2025 +nodename: nova +machine: x86_64 +clock source: unix +pcre jit disabled +detected number of CPU cores: 8 +current working directory: /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend +detected binary path: /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/bin/uwsgi +your processes number limit is 63010 +your memory page size is 4096 bytes +detected max file descriptor number: 1048576 +lock engine: pthread robust mutexes +thunder lock: disabled (you can enable it with --thunder-lock) +*** RRDtool library available at 0x5ca4231c2e80 *** +uWSGI http bound on :8080 fd 4 +uwsgi socket 0 bound to TCP address 127.0.0.1:44139 (port auto-assigned) fd 3 +Python version: 3.12.3 (main, Aug 14 2025, 17:47:21) [GCC 13.3.0] +Python main interpreter initialized at 0x7a4a5b6a39e8 +python threads support enabled +your server socket listen backlog is limited to 100 connections +your mercy for graceful operations on workers is 60 seconds +mapped 145840 bytes (142 KB) for 1 cores +*** Operational MODE: single process *** +INFO: Initializing Falcon application +2025-09-21 15:52:51,297 [OEDB] [INFO] Initializing Falcon application +INFO: Rate limiting initialized: 60 requests per 60 seconds +2025-09-21 15:52:51,297 [OEDB] [INFO] Rate limiting initialized: 60 requests per 60 seconds +INFO: Loading environment variables from /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/.env... +2025-09-21 15:52:51,299 [OEDB] [INFO] Loading environment variables from /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/.env... +DEBUG: Connecting to database: oedb on localhost as user cipherbliss +DEBUG: Using TCP/IP connection with additional parameters +SUCCESS: Successfully connected to PostgreSQL database +2025-09-21 15:52:51,304 [OEDB] [INFO] SUCCESS: Successfully connected to PostgreSQL database +INFO: Setting up API routes +2025-09-21 15:52:51,304 [OEDB] [INFO] Setting up API routes +SUCCESS: Application initialized successfully +2025-09-21 15:52:51,305 [OEDB] [INFO] SUCCESS: Application initialized successfully +WSGI app 0 (mountpoint='') ready in 0 seconds on interpreter 0x7a4a5b6a39e8 pid: 250703 (default app) +*** uWSGI is running in multiple interpreter mode *** +spawned uWSGI master process (pid: 250703) +spawned uWSGI worker 1 (pid: 250745, cores: 1) +spawned uWSGI http 1 (pid: 250746) +INFO: Processing GET request to /demo/traffic +2025-09-21 15:53:00,265 [OEDB] [INFO] Processing GET request to /demo/traffic +INFO: Loading environment variables from /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/.env... +2025-09-21 15:53:00,265 [OEDB] [INFO] Loading environment variables from /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/.env... +SUCCESS: Successfully processed GET request to /demo/traffic +2025-09-21 15:53:00,274 [OEDB] [INFO] SUCCESS: Successfully processed GET request to /demo/traffic +DEBUG: Adding caching headers with max-age=3600 to GET /demo/traffic +DEBUG: Adding standard headers to response +[pid: 250745|app: 0|req: 1/1] 127.0.0.1 () {54 vars in 910 bytes} [Sun Sep 21 15:53:00 2025] GET /demo/traffic => generated 22326 bytes in 11 msecs (HTTP/1.1 200) 8 headers in 299 bytes (1 switches on core 0) +DEBUG: Adding no-cache headers to response +DEBUG: Adding standard headers to response +[pid: 250745|app: 0|req: 2/2] 127.0.0.1 () {50 vars in 836 bytes} [Sun Sep 21 15:53:00 2025] GET /static/demo/demo_styles.css => generated 26 bytes in 0 msecs (HTTP/1.1 404) 10 headers in 357 bytes (1 switches on core 0) +DEBUG: Adding no-cache headers to response +DEBUG: Adding standard headers to response +[pid: 250745|app: 0|req: 3/3] 127.0.0.1 () {50 vars in 816 bytes} [Sun Sep 21 15:53:00 2025] GET /static/demo/demo_auth.js => generated 26 bytes in 0 msecs (HTTP/1.1 404) 10 headers in 357 bytes (1 switches on core 0) +DEBUG: Adding no-cache headers to response +DEBUG: Adding standard headers to response +[pid: 250745|app: 0|req: 4/4] 127.0.0.1 () {50 vars in 837 bytes} [Sun Sep 21 15:53:00 2025] GET /static/demo/demo_styles.css => generated 26 bytes in 0 msecs (HTTP/1.1 404) 10 headers in 357 bytes (1 switches on core 0) +DEBUG: Adding no-cache headers to response +DEBUG: Adding standard headers to response +[pid: 250745|app: 0|req: 5/5] 127.0.0.1 () {48 vars in 797 bytes} [Sun Sep 21 15:53:00 2025] GET /static/demo/demo_auth.js => generated 26 bytes in 0 msecs (HTTP/1.1 404) 10 headers in 357 bytes (1 switches on core 0) +INFO: Processing GET request to /demo +2025-09-21 16:19:20,420 [OEDB] [INFO] Processing GET request to /demo +INFO: Loading environment variables from /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/.env... +2025-09-21 16:19:20,423 [OEDB] [INFO] Loading environment variables from /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/.env... +SUCCESS: Successfully processed GET request to /demo +2025-09-21 16:19:20,425 [OEDB] [INFO] SUCCESS: Successfully processed GET request to /demo +DEBUG: Adding caching headers with max-age=3600 to GET /demo +DEBUG: Adding standard headers to response +[pid: 250745|app: 0|req: 6/6] 127.0.0.1 () {54 vars in 899 bytes} [Sun Sep 21 16:19:20 2025] GET /demo => generated 22360 bytes in 18 msecs (HTTP/1.1 200) 8 headers in 299 bytes (1 switches on core 0) +DEBUG: Adding no-cache headers to response +DEBUG: Adding standard headers to response +[pid: 250745|app: 0|req: 7/7] 127.0.0.1 () {50 vars in 829 bytes} [Sun Sep 21 16:19:20 2025] GET /static/demo/demo_styles.css => generated 26 bytes in 1 msecs (HTTP/1.1 404) 10 headers in 357 bytes (1 switches on core 0) +DEBUG: Adding no-cache headers to response +DEBUG: Adding standard headers to response +[pid: 250745|app: 0|req: 8/8] 127.0.0.1 () {50 vars in 809 bytes} [Sun Sep 21 16:19:20 2025] GET /static/demo/demo_auth.js => generated 26 bytes in 0 msecs (HTTP/1.1 404) 10 headers in 357 bytes (1 switches on core 0) +DEBUG: Adding no-cache headers to response +DEBUG: Adding standard headers to response +[pid: 250745|app: 0|req: 9/9] 127.0.0.1 () {50 vars in 829 bytes} [Sun Sep 21 16:19:20 2025] GET /static/demo/demo_styles.css => generated 26 bytes in 0 msecs (HTTP/1.1 404) 10 headers in 357 bytes (1 switches on core 0) +DEBUG: Adding no-cache headers to response +DEBUG: Adding standard headers to response +[pid: 250745|app: 0|req: 10/10] 127.0.0.1 () {48 vars in 789 bytes} [Sun Sep 21 16:19:20 2025] GET /static/demo/demo_auth.js => generated 26 bytes in 0 msecs (HTTP/1.1 404) 10 headers in 357 bytes (1 switches on core 0) +INFO: Processing GET request to /event +2025-09-21 16:19:21,461 [OEDB] [INFO] Processing GET request to /event +INFO: Loading environment variables from /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/.env... +2025-09-21 16:19:21,461 [OEDB] [INFO] Loading environment variables from /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/.env... +DEBUG: Connecting to database: oedb on localhost as user cipherbliss +DEBUG: Using TCP/IP connection with additional parameters +DEBUG: Executing SQL: SELECT events_id, events_tags, createdate, lastupdate, st_asgeojson(geom_center) as geometry, st_x(geom_center) as lon, st_y(geom_center) as lat + FROM events JOIN geo ON (hash=events_geo) + WHERE events_when @> now() + ORDER BY createdate DESC LIMIT 200 +DEBUG: Converting 1 rows to collection +DEBUG: Converting row to feature (geom_only=False) +SUCCESS: Successfully processed GET request to /event +2025-09-21 16:19:21,567 [OEDB] [INFO] SUCCESS: Successfully processed GET request to /event +DEBUG: Adding caching headers with max-age=60 to GET /event +DEBUG: Adding standard headers to response +[pid: 250745|app: 0|req: 11/11] 127.0.0.1 () {50 vars in 767 bytes} [Sun Sep 21 16:19:21 2025] GET /event => generated 1104 bytes in 107 msecs (HTTP/1.1 200) 8 headers in 303 bytes (1 switches on core 0) +DEBUG: Adding no-cache headers to response +DEBUG: Adding standard headers to response +[pid: 250745|app: 0|req: 12/12] 127.0.0.1 () {50 vars in 837 bytes} [Sun Sep 21 16:19:24 2025] GET /static/demo/demo_styles.css => generated 26 bytes in 10 msecs (HTTP/1.1 404) 10 headers in 357 bytes (1 switches on core 0) +DEBUG: Adding no-cache headers to response +DEBUG: Adding standard headers to response +[pid: 250745|app: 0|req: 13/13] 127.0.0.1 () {50 vars in 817 bytes} [Sun Sep 21 16:19:24 2025] GET /static/demo/demo_auth.js => generated 26 bytes in 0 msecs (HTTP/1.1 404) 10 headers in 357 bytes (1 switches on core 0) +DEBUG: Adding no-cache headers to response +DEBUG: Adding standard headers to response +[pid: 250745|app: 0|req: 14/14] 127.0.0.1 () {50 vars in 837 bytes} [Sun Sep 21 16:19:24 2025] GET /static/demo/demo_styles.css => generated 26 bytes in 0 msecs (HTTP/1.1 404) 10 headers in 357 bytes (1 switches on core 0) +DEBUG: Adding no-cache headers to response +DEBUG: Adding standard headers to response +[pid: 250745|app: 0|req: 15/15] 127.0.0.1 () {48 vars in 797 bytes} [Sun Sep 21 16:19:24 2025] GET /static/demo/demo_auth.js => generated 26 bytes in 0 msecs (HTTP/1.1 404) 10 headers in 357 bytes (1 switches on core 0) +*** Starting uWSGI 2.0.30 (64bit) on [Sun Sep 21 16:19:59 2025] *** +compiled with version: 13.3.0 on 16 September 2025 12:23:28 +os: Linux-6.8.0-79-generic #79-Ubuntu SMP PREEMPT_DYNAMIC Tue Aug 12 14:42:46 UTC 2025 +nodename: nova +machine: x86_64 +clock source: unix +pcre jit disabled +detected number of CPU cores: 8 +current working directory: /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend +detected binary path: /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/bin/uwsgi +your processes number limit is 63010 +your memory page size is 4096 bytes +detected max file descriptor number: 1048576 +lock engine: pthread robust mutexes +thunder lock: disabled (you can enable it with --thunder-lock) +*** RRDtool library available at 0x650fb518be80 *** +uWSGI http bound on :8081 fd 4 +uwsgi socket 0 bound to TCP address 127.0.0.1:35397 (port auto-assigned) fd 3 +Python version: 3.12.3 (main, Aug 14 2025, 17:47:21) [GCC 13.3.0] +Python main interpreter initialized at 0x732c6b8a39e8 +python threads support enabled +your server socket listen backlog is limited to 100 connections +your mercy for graceful operations on workers is 60 seconds +mapped 145840 bytes (142 KB) for 1 cores +*** Operational MODE: single process *** +INFO: Initializing Falcon application +2025-09-21 16:20:00,499 [OEDB] [INFO] Initializing Falcon application +INFO: Rate limiting initialized: 60 requests per 60 seconds +2025-09-21 16:20:00,500 [OEDB] [INFO] Rate limiting initialized: 60 requests per 60 seconds +INFO: Setting up static file serving +2025-09-21 16:20:00,509 [OEDB] [INFO] Setting up static file serving +Traceback (most recent call last): + File "backend.py", line 78, in + app = create_app() + ^^^^^^^^^^^^ + File "backend.py", line 48, in create_app + app.add_static_route('/static/', static_dir) + File "/home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/lib/python3.12/site-packages/falcon/app.py", line 732, in add_static_route + sr = self._STATIC_ROUTE_TYPE( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/lib/python3.12/site-packages/falcon/routing/static.py", line 199, in __init__ + raise ValueError('directory must be an absolute path') +ValueError: directory must be an absolute path +unable to load app 0 (mountpoint='') (callable not found or import error) +*** no app loaded. going in full dynamic mode *** +*** uWSGI is running in multiple interpreter mode *** +spawned uWSGI master process (pid: 261037) +spawned uWSGI worker 1 (pid: 261088, cores: 1) +spawned uWSGI http 1 (pid: 261089) +*** Starting uWSGI 2.0.30 (64bit) on [Sun Sep 21 16:20:01 2025] *** +compiled with version: 13.3.0 on 16 September 2025 12:23:28 +os: Linux-6.8.0-79-generic #79-Ubuntu SMP PREEMPT_DYNAMIC Tue Aug 12 14:42:46 UTC 2025 +nodename: nova +machine: x86_64 +clock source: unix +pcre jit disabled +detected number of CPU cores: 8 +current working directory: /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend +detected binary path: /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/bin/uwsgi +your processes number limit is 63010 +your memory page size is 4096 bytes +detected max file descriptor number: 1048576 +lock engine: pthread robust mutexes +thunder lock: disabled (you can enable it with --thunder-lock) +*** RRDtool library available at 0x5fe38579be80 *** +probably another instance of uWSGI is running on the same address (:8081). +bind(): Address already in use [core/socket.c line 769] +gateway "uWSGI http 1" has been buried (pid: 250746) +...brutally killing workers... +gateway "uWSGI http 1" has been buried (pid: 261089) +...brutally killing workers... +worker 1 buried after 1 seconds +binary reloading uWSGI... +chdir() to /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend +closing all non-uwsgi socket fds > 2 (max_fd = 1048576)... +found fd 3 mapped to socket 0 (127.0.0.1:44139) +worker 1 buried after 1 seconds +binary reloading uWSGI... +chdir() to /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend +closing all non-uwsgi socket fds > 2 (max_fd = 1048576)... +found fd 3 mapped to socket 0 (127.0.0.1:35397) +running /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/bin/uwsgi +running /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/bin/uwsgi +*** Starting uWSGI 2.0.30 (64bit) on [Sun Sep 21 16:20:11 2025] *** +*** Starting uWSGI 2.0.30 (64bit) on [Sun Sep 21 16:20:11 2025] *** +compiled with version: 13.3.0 on 16 September 2025 12:23:28 +compiled with version: 13.3.0 on 16 September 2025 12:23:28 +os: Linux-6.8.0-79-generic #79-Ubuntu SMP PREEMPT_DYNAMIC Tue Aug 12 14:42:46 UTC 2025 +os: Linux-6.8.0-79-generic #79-Ubuntu SMP PREEMPT_DYNAMIC Tue Aug 12 14:42:46 UTC 2025 +nodename: nova +nodename: nova +machine: x86_64 +machine: x86_64 +clock source: unix +clock source: unix +pcre jit disabled +pcre jit disabled +detected number of CPU cores: 8 +detected number of CPU cores: 8 +current working directory: /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend +current working directory: /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend +detected binary path: /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/bin/uwsgi +detected binary path: /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/bin/uwsgi +your processes number limit is 63010 +your processes number limit is 63010 +your memory page size is 4096 bytes +your memory page size is 4096 bytes +detected max file descriptor number: 1048576 +detected max file descriptor number: 1048576 +lock engine: pthread robust mutexes +lock engine: pthread robust mutexes +thunder lock: disabled (you can enable it with --thunder-lock) +thunder lock: disabled (you can enable it with --thunder-lock) +*** RRDtool library available at 0x594efc367c10 *** +*** RRDtool library available at 0x58258addca80 *** +uWSGI http bound on :8080 fd 5 +uWSGI http bound on :8081 fd 5 +uwsgi socket 0 bound to TCP address 127.0.0.1:41691 (port auto-assigned) fd 4 +Python version: 3.12.3 (main, Aug 14 2025, 17:47:21) [GCC 13.3.0] +uwsgi socket 0 bound to TCP address 127.0.0.1:41209 (port auto-assigned) fd 4 +Python version: 3.12.3 (main, Aug 14 2025, 17:47:21) [GCC 13.3.0] +Python main interpreter initialized at 0x70457dca39e8 +Python main interpreter initialized at 0x769f9baa39e8 +python threads support enabled +your server socket listen backlog is limited to 100 connections +python threads support enabled +your mercy for graceful operations on workers is 60 seconds +your server socket listen backlog is limited to 100 connections +your mercy for graceful operations on workers is 60 seconds +mapped 145840 bytes (142 KB) for 1 cores +*** Operational MODE: single process *** +mapped 145840 bytes (142 KB) for 1 cores +*** Operational MODE: single process *** +INFO: Initializing Falcon application +2025-09-21 16:20:11,879 [OEDB] [INFO] Initializing Falcon application +INFO: Rate limiting initialized: 60 requests per 60 seconds +2025-09-21 16:20:11,879 [OEDB] [INFO] Rate limiting initialized: 60 requests per 60 seconds +INFO: Setting up static file serving +2025-09-21 16:20:11,887 [OEDB] [INFO] Setting up static file serving +Traceback (most recent call last): + File "backend.py", line 78, in + app = create_app() + ^^^^^^^^^^^^ + File "backend.py", line 48, in create_app + app.add_static_route('/static/', static_dir) + File "/home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/lib/python3.12/site-packages/falcon/app.py", line 732, in add_static_route + sr = self._STATIC_ROUTE_TYPE( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/lib/python3.12/site-packages/falcon/routing/static.py", line 199, in __init__ +INFO: Initializing Falcon application + raise ValueError('directory must be an absolute path') +2025-09-21 16:20:11,888 [OEDB] [INFO] Initializing Falcon application +ValueError: directory must be an absolute path +INFO: Rate limiting initialized: 60 requests per 60 seconds +unable to load app 0 (mountpoint='') (callable not found or import error) +*** no app loaded. going in full dynamic mode *** +2025-09-21 16:20:11,889 [OEDB] [INFO] Rate limiting initialized: 60 requests per 60 seconds +*** uWSGI is running in multiple interpreter mode *** +gracefully (RE)spawned uWSGI master process (pid: 261037) +spawned uWSGI worker 1 (pid: 261308, cores: 1) +spawned uWSGI http 1 (pid: 261309) +INFO: Setting up static file serving +2025-09-21 16:20:11,893 [OEDB] [INFO] Setting up static file serving +Traceback (most recent call last): + File "backend.py", line 78, in + app = create_app() + ^^^^^^^^^^^^ + File "backend.py", line 48, in create_app + app.add_static_route('/static/', static_dir) + File "/home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/lib/python3.12/site-packages/falcon/app.py", line 732, in add_static_route + sr = self._STATIC_ROUTE_TYPE( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/lib/python3.12/site-packages/falcon/routing/static.py", line 199, in __init__ + raise ValueError('directory must be an absolute path') +ValueError: directory must be an absolute path +unable to load app 0 (mountpoint='') (callable not found or import error) +*** no app loaded. going in full dynamic mode *** +*** uWSGI is running in multiple interpreter mode *** +gracefully (RE)spawned uWSGI master process (pid: 250703) +spawned uWSGI worker 1 (pid: 261310, cores: 1) +spawned uWSGI http 1 (pid: 261311) +gateway "uWSGI http 1" has been buried (pid: 261311) +...brutally killing workers... +worker 1 buried after 1 seconds +binary reloading uWSGI... +chdir() to /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend +closing all non-uwsgi socket fds > 2 (max_fd = 1048576)... +found fd 4 mapped to socket 0 (127.0.0.1:41691) +running /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/bin/uwsgi +*** Starting uWSGI 2.0.30 (64bit) on [Sun Sep 21 16:39:13 2025] *** +compiled with version: 13.3.0 on 16 September 2025 12:23:28 +os: Linux-6.8.0-79-generic #79-Ubuntu SMP PREEMPT_DYNAMIC Tue Aug 12 14:42:46 UTC 2025 +nodename: nova +machine: x86_64 +clock source: unix +pcre jit disabled +detected number of CPU cores: 8 +current working directory: /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend +detected binary path: /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/bin/uwsgi +your processes number limit is 63010 +your memory page size is 4096 bytes +detected max file descriptor number: 1048576 +lock engine: pthread robust mutexes +thunder lock: disabled (you can enable it with --thunder-lock) +*** RRDtool library available at 0x62e69aaa5c10 *** +uWSGI http bound on :8080 fd 5 +uwsgi socket 0 bound to TCP address 127.0.0.1:35623 (port auto-assigned) fd 3 +Python version: 3.12.3 (main, Aug 14 2025, 17:47:21) [GCC 13.3.0] +Python main interpreter initialized at 0x78b6e76a39e8 +python threads support enabled +your server socket listen backlog is limited to 100 connections +your mercy for graceful operations on workers is 60 seconds +mapped 145840 bytes (142 KB) for 1 cores +*** Operational MODE: single process *** +INFO: Initializing Falcon application +2025-09-21 16:39:14,393 [OEDB] [INFO] Initializing Falcon application +INFO: Rate limiting initialized: 60 requests per 60 seconds +2025-09-21 16:39:14,393 [OEDB] [INFO] Rate limiting initialized: 60 requests per 60 seconds +INFO: Setting up static file serving +2025-09-21 16:39:14,397 [OEDB] [INFO] Setting up static file serving +Traceback (most recent call last): + File "backend.py", line 78, in + app = create_app() + ^^^^^^^^^^^^ + File "backend.py", line 48, in create_app + app.add_static_route('/static/', static_dir) + File "/home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/lib/python3.12/site-packages/falcon/app.py", line 732, in add_static_route + sr = self._STATIC_ROUTE_TYPE( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/lib/python3.12/site-packages/falcon/routing/static.py", line 199, in __init__ + raise ValueError('directory must be an absolute path') +ValueError: directory must be an absolute path +unable to load app 0 (mountpoint='') (callable not found or import error) +*** no app loaded. going in full dynamic mode *** +*** uWSGI is running in multiple interpreter mode *** +gracefully (RE)spawned uWSGI master process (pid: 250703) +spawned uWSGI worker 1 (pid: 269853, cores: 1) +spawned uWSGI http 1 (pid: 269854) +gateway "uWSGI http 1" has been buried (pid: 261309) +...brutally killing workers... +worker 1 buried after 1 seconds +binary reloading uWSGI... +chdir() to /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend +closing all non-uwsgi socket fds > 2 (max_fd = 1048576)... +found fd 4 mapped to socket 0 (127.0.0.1:41209) +running /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/bin/uwsgi +*** Starting uWSGI 2.0.30 (64bit) on [Sun Sep 21 16:39:15 2025] *** +compiled with version: 13.3.0 on 16 September 2025 12:23:28 +os: Linux-6.8.0-79-generic #79-Ubuntu SMP PREEMPT_DYNAMIC Tue Aug 12 14:42:46 UTC 2025 +nodename: nova +machine: x86_64 +clock source: unix +pcre jit disabled +detected number of CPU cores: 8 +current working directory: /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend +detected binary path: /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/bin/uwsgi +your processes number limit is 63010 +your memory page size is 4096 bytes +detected max file descriptor number: 1048576 +lock engine: pthread robust mutexes +thunder lock: disabled (you can enable it with --thunder-lock) +*** RRDtool library available at 0x64dbe73eca80 *** +uWSGI http bound on :8081 fd 5 +uwsgi socket 0 bound to TCP address 127.0.0.1:40021 (port auto-assigned) fd 3 +Python version: 3.12.3 (main, Aug 14 2025, 17:47:21) [GCC 13.3.0] +Python main interpreter initialized at 0x7b57350a39e8 +python threads support enabled +your server socket listen backlog is limited to 100 connections +your mercy for graceful operations on workers is 60 seconds +mapped 145840 bytes (142 KB) for 1 cores +*** Operational MODE: single process *** +INFO: Initializing Falcon application +2025-09-21 16:39:16,192 [OEDB] [INFO] Initializing Falcon application +INFO: Rate limiting initialized: 60 requests per 60 seconds +2025-09-21 16:39:16,193 [OEDB] [INFO] Rate limiting initialized: 60 requests per 60 seconds +INFO: Setting up static file serving +2025-09-21 16:39:16,196 [OEDB] [INFO] Setting up static file serving +Traceback (most recent call last): + File "backend.py", line 78, in + app = create_app() + ^^^^^^^^^^^^ + File "backend.py", line 48, in create_app + app.add_static_route('/static/', static_dir) + File "/home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/lib/python3.12/site-packages/falcon/app.py", line 732, in add_static_route + sr = self._STATIC_ROUTE_TYPE( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/lib/python3.12/site-packages/falcon/routing/static.py", line 199, in __init__ + raise ValueError('directory must be an absolute path') +ValueError: directory must be an absolute path +unable to load app 0 (mountpoint='') (callable not found or import error) +*** no app loaded. going in full dynamic mode *** +*** uWSGI is running in multiple interpreter mode *** +gracefully (RE)spawned uWSGI master process (pid: 261037) +spawned uWSGI worker 1 (pid: 269861, cores: 1) +spawned uWSGI http 1 (pid: 269862) +gateway "uWSGI http 1" has been buried (pid: 269854) +...brutally killing workers... +gateway "uWSGI http 1" has been buried (pid: 269862) +...brutally killing workers... +worker 1 buried after 1 seconds +binary reloading uWSGI... +chdir() to /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend +closing all non-uwsgi socket fds > 2 (max_fd = 1048576)... +found fd 3 mapped to socket 0 (127.0.0.1:35623) +worker 1 buried after 1 seconds +binary reloading uWSGI... +chdir() to /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend +closing all non-uwsgi socket fds > 2 (max_fd = 1048576)... +found fd 3 mapped to socket 0 (127.0.0.1:40021) +running /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/bin/uwsgi +*** Starting uWSGI 2.0.30 (64bit) on [Sun Sep 21 16:40:47 2025] *** +compiled with version: 13.3.0 on 16 September 2025 12:23:28 +os: Linux-6.8.0-79-generic #79-Ubuntu SMP PREEMPT_DYNAMIC Tue Aug 12 14:42:46 UTC 2025 +nodename: nova +machine: x86_64 +clock source: unix +pcre jit disabled +detected number of CPU cores: 8 +current working directory: /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend +detected binary path: /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/bin/uwsgi +your processes number limit is 63010 +your memory page size is 4096 bytes +detected max file descriptor number: 1048576 +lock engine: pthread robust mutexes +thunder lock: disabled (you can enable it with --thunder-lock) +running /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/bin/uwsgi +*** RRDtool library available at 0x611fab495c10 *** +uWSGI http bound on :8080 fd 5 +*** Starting uWSGI 2.0.30 (64bit) on [Sun Sep 21 16:40:47 2025] *** +compiled with version: 13.3.0 on 16 September 2025 12:23:28 +os: Linux-6.8.0-79-generic #79-Ubuntu SMP PREEMPT_DYNAMIC Tue Aug 12 14:42:46 UTC 2025 +nodename: nova +machine: x86_64 +clock source: unix +pcre jit disabled +detected number of CPU cores: 8 +current working directory: /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend +detected binary path: /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/bin/uwsgi +your processes number limit is 63010 +your memory page size is 4096 bytes +detected max file descriptor number: 1048576 +lock engine: pthread robust mutexes +thunder lock: disabled (you can enable it with --thunder-lock) +*** RRDtool library available at 0x58b5f0222a80 *** +uWSGI http bound on :8081 fd 5 +uwsgi socket 0 bound to TCP address 127.0.0.1:34347 (port auto-assigned) fd 4 +Python version: 3.12.3 (main, Aug 14 2025, 17:47:21) [GCC 13.3.0] +uwsgi socket 0 bound to TCP address 127.0.0.1:43199 (port auto-assigned) fd 4 +Python main interpreter initialized at 0x7cad026a39e8 +Python version: 3.12.3 (main, Aug 14 2025, 17:47:21) [GCC 13.3.0] +python threads support enabled +your server socket listen backlog is limited to 100 connections +your mercy for graceful operations on workers is 60 seconds +mapped 145840 bytes (142 KB) for 1 cores +*** Operational MODE: single process *** +Python main interpreter initialized at 0x721af66a39e8 +python threads support enabled +your server socket listen backlog is limited to 100 connections +your mercy for graceful operations on workers is 60 seconds +mapped 145840 bytes (142 KB) for 1 cores +*** Operational MODE: single process *** +INFO: Initializing Falcon application +2025-09-21 16:40:47,903 [OEDB] [INFO] Initializing Falcon application +INFO: Rate limiting initialized: 60 requests per 60 seconds +2025-09-21 16:40:47,903 [OEDB] [INFO] Rate limiting initialized: 60 requests per 60 seconds +INFO: Setting up static file serving +2025-09-21 16:40:47,907 [OEDB] [INFO] Setting up static file serving +Traceback (most recent call last): + File "backend.py", line 78, in + app = create_app() + ^^^^^^^^^^^^ + File "backend.py", line 48, in create_app + app.add_static_route('/static/', static_dir) + File "/home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/lib/python3.12/site-packages/falcon/app.py", line 732, in add_static_route + sr = self._STATIC_ROUTE_TYPE( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/lib/python3.12/site-packages/falcon/routing/static.py", line 199, in __init__ + raise ValueError('directory must be an absolute path') +ValueError: directory must be an absolute path +unable to load app 0 (mountpoint='') (callable not found or import error) +*** no app loaded. going in full dynamic mode *** +*** uWSGI is running in multiple interpreter mode *** +gracefully (RE)spawned uWSGI master process (pid: 250703) +spawned uWSGI worker 1 (pid: 270442, cores: 1) +spawned uWSGI http 1 (pid: 270443) +INFO: Initializing Falcon application +2025-09-21 16:40:47,927 [OEDB] [INFO] Initializing Falcon application +INFO: Rate limiting initialized: 60 requests per 60 seconds +2025-09-21 16:40:47,928 [OEDB] [INFO] Rate limiting initialized: 60 requests per 60 seconds +INFO: Setting up static file serving +2025-09-21 16:40:47,934 [OEDB] [INFO] Setting up static file serving +Traceback (most recent call last): + File "backend.py", line 78, in + app = create_app() + ^^^^^^^^^^^^ + File "backend.py", line 48, in create_app + app.add_static_route('/static/', static_dir) + File "/home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/lib/python3.12/site-packages/falcon/app.py", line 732, in add_static_route + sr = self._STATIC_ROUTE_TYPE( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/lib/python3.12/site-packages/falcon/routing/static.py", line 199, in __init__ + raise ValueError('directory must be an absolute path') +ValueError: directory must be an absolute path +unable to load app 0 (mountpoint='') (callable not found or import error) +*** no app loaded. going in full dynamic mode *** +*** uWSGI is running in multiple interpreter mode *** +gracefully (RE)spawned uWSGI master process (pid: 261037) +spawned uWSGI worker 1 (pid: 270444, cores: 1) +spawned uWSGI http 1 (pid: 270445) +gateway "uWSGI http 1" has been buried (pid: 270443) +...brutally killing workers... +worker 1 buried after 1 seconds +binary reloading uWSGI... +chdir() to /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend +closing all non-uwsgi socket fds > 2 (max_fd = 1048576)... +found fd 4 mapped to socket 0 (127.0.0.1:34347) +running /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/bin/uwsgi +*** Starting uWSGI 2.0.30 (64bit) on [Sun Sep 21 16:41:05 2025] *** +compiled with version: 13.3.0 on 16 September 2025 12:23:28 +os: Linux-6.8.0-79-generic #79-Ubuntu SMP PREEMPT_DYNAMIC Tue Aug 12 14:42:46 UTC 2025 +nodename: nova +machine: x86_64 +clock source: unix +pcre jit disabled +detected number of CPU cores: 8 +current working directory: /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend +detected binary path: /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/bin/uwsgi +your processes number limit is 63010 +your memory page size is 4096 bytes +detected max file descriptor number: 1048576 +lock engine: pthread robust mutexes +thunder lock: disabled (you can enable it with --thunder-lock) +*** RRDtool library available at 0x5b1913b1bc10 *** +uWSGI http bound on :8080 fd 5 +uwsgi socket 0 bound to TCP address 127.0.0.1:40747 (port auto-assigned) fd 3 +Python version: 3.12.3 (main, Aug 14 2025, 17:47:21) [GCC 13.3.0] +Python main interpreter initialized at 0x79e6802a39e8 +python threads support enabled +your server socket listen backlog is limited to 100 connections +your mercy for graceful operations on workers is 60 seconds +mapped 145840 bytes (142 KB) for 1 cores +*** Operational MODE: single process *** +gateway "uWSGI http 1" has been buried (pid: 270445) +...brutally killing workers... +INFO: Initializing Falcon application +2025-09-21 16:41:06,005 [OEDB] [INFO] Initializing Falcon application +INFO: Rate limiting initialized: 60 requests per 60 seconds +2025-09-21 16:41:06,005 [OEDB] [INFO] Rate limiting initialized: 60 requests per 60 seconds +INFO: Setting up static file serving +2025-09-21 16:41:06,018 [OEDB] [INFO] Setting up static file serving +Traceback (most recent call last): + File "backend.py", line 78, in + app = create_app() + ^^^^^^^^^^^^ + File "backend.py", line 48, in create_app + app.add_static_route('/static/', static_dir) + File "/home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/lib/python3.12/site-packages/falcon/app.py", line 732, in add_static_route + sr = self._STATIC_ROUTE_TYPE( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/lib/python3.12/site-packages/falcon/routing/static.py", line 199, in __init__ + raise ValueError('directory must be an absolute path') +ValueError: directory must be an absolute path +unable to load app 0 (mountpoint='') (callable not found or import error) +*** no app loaded. going in full dynamic mode *** +*** uWSGI is running in multiple interpreter mode *** +gracefully (RE)spawned uWSGI master process (pid: 250703) +spawned uWSGI worker 1 (pid: 270530, cores: 1) +spawned uWSGI http 1 (pid: 270531) +worker 1 buried after 1 seconds +binary reloading uWSGI... +chdir() to /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend +closing all non-uwsgi socket fds > 2 (max_fd = 1048576)... +found fd 4 mapped to socket 0 (127.0.0.1:43199) +running /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/bin/uwsgi +*** Starting uWSGI 2.0.30 (64bit) on [Sun Sep 21 16:41:07 2025] *** +compiled with version: 13.3.0 on 16 September 2025 12:23:28 +os: Linux-6.8.0-79-generic #79-Ubuntu SMP PREEMPT_DYNAMIC Tue Aug 12 14:42:46 UTC 2025 +nodename: nova +machine: x86_64 +clock source: unix +pcre jit disabled +detected number of CPU cores: 8 +current working directory: /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend +detected binary path: /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/bin/uwsgi +your processes number limit is 63010 +your memory page size is 4096 bytes +detected max file descriptor number: 1048576 +lock engine: pthread robust mutexes +thunder lock: disabled (you can enable it with --thunder-lock) +*** RRDtool library available at 0x5b2ee3791a80 *** +uWSGI http bound on :8081 fd 5 +uwsgi socket 0 bound to TCP address 127.0.0.1:35805 (port auto-assigned) fd 3 +Python version: 3.12.3 (main, Aug 14 2025, 17:47:21) [GCC 13.3.0] +Python main interpreter initialized at 0x76723b4a39e8 +python threads support enabled +your server socket listen backlog is limited to 100 connections +your mercy for graceful operations on workers is 60 seconds +mapped 145840 bytes (142 KB) for 1 cores +*** Operational MODE: single process *** +INFO: Initializing Falcon application +2025-09-21 16:41:07,523 [OEDB] [INFO] Initializing Falcon application +INFO: Rate limiting initialized: 60 requests per 60 seconds +2025-09-21 16:41:07,523 [OEDB] [INFO] Rate limiting initialized: 60 requests per 60 seconds +INFO: Setting up static file serving +2025-09-21 16:41:07,526 [OEDB] [INFO] Setting up static file serving +Traceback (most recent call last): + File "backend.py", line 78, in + app = create_app() + ^^^^^^^^^^^^ + File "backend.py", line 48, in create_app + app.add_static_route('/static/', static_dir) + File "/home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/lib/python3.12/site-packages/falcon/app.py", line 732, in add_static_route + sr = self._STATIC_ROUTE_TYPE( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/lib/python3.12/site-packages/falcon/routing/static.py", line 199, in __init__ + raise ValueError('directory must be an absolute path') +ValueError: directory must be an absolute path +unable to load app 0 (mountpoint='') (callable not found or import error) +*** no app loaded. going in full dynamic mode *** +*** uWSGI is running in multiple interpreter mode *** +gracefully (RE)spawned uWSGI master process (pid: 261037) +spawned uWSGI worker 1 (pid: 270539, cores: 1) +spawned uWSGI http 1 (pid: 270540) +gateway "uWSGI http 1" has been buried (pid: 270531) +...brutally killing workers... +worker 1 buried after 1 seconds +binary reloading uWSGI... +chdir() to /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend +closing all non-uwsgi socket fds > 2 (max_fd = 1048576)... +found fd 3 mapped to socket 0 (127.0.0.1:40747) +running /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/bin/uwsgi +*** Starting uWSGI 2.0.30 (64bit) on [Sun Sep 21 16:41:09 2025] *** +compiled with version: 13.3.0 on 16 September 2025 12:23:28 +os: Linux-6.8.0-79-generic #79-Ubuntu SMP PREEMPT_DYNAMIC Tue Aug 12 14:42:46 UTC 2025 +nodename: nova +machine: x86_64 +clock source: unix +pcre jit disabled +detected number of CPU cores: 8 +current working directory: /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend +detected binary path: /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/bin/uwsgi +your processes number limit is 63010 +your memory page size is 4096 bytes +detected max file descriptor number: 1048576 +lock engine: pthread robust mutexes +thunder lock: disabled (you can enable it with --thunder-lock) +*** RRDtool library available at 0x5bc09df41c10 *** +uWSGI http bound on :8080 fd 5 +uwsgi socket 0 bound to TCP address 127.0.0.1:40307 (port auto-assigned) fd 4 +Python version: 3.12.3 (main, Aug 14 2025, 17:47:21) [GCC 13.3.0] +Python main interpreter initialized at 0x749bbcaa39e8 +python threads support enabled +your server socket listen backlog is limited to 100 connections +your mercy for graceful operations on workers is 60 seconds +mapped 145840 bytes (142 KB) for 1 cores +*** Operational MODE: single process *** +INFO: Initializing Falcon application +2025-09-21 16:41:09,851 [OEDB] [INFO] Initializing Falcon application +INFO: Rate limiting initialized: 60 requests per 60 seconds +2025-09-21 16:41:09,851 [OEDB] [INFO] Rate limiting initialized: 60 requests per 60 seconds +INFO: Setting up static file serving +2025-09-21 16:41:09,855 [OEDB] [INFO] Setting up static file serving +Traceback (most recent call last): + File "backend.py", line 78, in + app = create_app() + ^^^^^^^^^^^^ + File "backend.py", line 48, in create_app + app.add_static_route('/static/', static_dir) + File "/home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/lib/python3.12/site-packages/falcon/app.py", line 732, in add_static_route + sr = self._STATIC_ROUTE_TYPE( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/lib/python3.12/site-packages/falcon/routing/static.py", line 199, in __init__ + raise ValueError('directory must be an absolute path') +ValueError: directory must be an absolute path +unable to load app 0 (mountpoint='') (callable not found or import error) +*** no app loaded. going in full dynamic mode *** +*** uWSGI is running in multiple interpreter mode *** +gracefully (RE)spawned uWSGI master process (pid: 250703) +spawned uWSGI worker 1 (pid: 270548, cores: 1) +spawned uWSGI http 1 (pid: 270549) +gateway "uWSGI http 1" has been buried (pid: 270540) +...brutally killing workers... +worker 1 buried after 1 seconds +binary reloading uWSGI... +chdir() to /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend +closing all non-uwsgi socket fds > 2 (max_fd = 1048576)... +found fd 3 mapped to socket 0 (127.0.0.1:35805) +running /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/bin/uwsgi +*** Starting uWSGI 2.0.30 (64bit) on [Sun Sep 21 16:41:11 2025] *** +compiled with version: 13.3.0 on 16 September 2025 12:23:28 +os: Linux-6.8.0-79-generic #79-Ubuntu SMP PREEMPT_DYNAMIC Tue Aug 12 14:42:46 UTC 2025 +nodename: nova +machine: x86_64 +clock source: unix +pcre jit disabled +detected number of CPU cores: 8 +current working directory: /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend +detected binary path: /home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/bin/uwsgi +your processes number limit is 63010 +your memory page size is 4096 bytes +detected max file descriptor number: 1048576 +lock engine: pthread robust mutexes +thunder lock: disabled (you can enable it with --thunder-lock) +*** RRDtool library available at 0x57aa63deba80 *** +uWSGI http bound on :8081 fd 5 +uwsgi socket 0 bound to TCP address 127.0.0.1:44561 (port auto-assigned) fd 4 +Python version: 3.12.3 (main, Aug 14 2025, 17:47:21) [GCC 13.3.0] +Python main interpreter initialized at 0x7ecfa8ea39e8 +python threads support enabled +your server socket listen backlog is limited to 100 connections +your mercy for graceful operations on workers is 60 seconds +mapped 145840 bytes (142 KB) for 1 cores +*** Operational MODE: single process *** +INFO: Initializing Falcon application +2025-09-21 16:41:11,754 [OEDB] [INFO] Initializing Falcon application +INFO: Rate limiting initialized: 60 requests per 60 seconds +2025-09-21 16:41:11,755 [OEDB] [INFO] Rate limiting initialized: 60 requests per 60 seconds +INFO: Setting up static file serving +2025-09-21 16:41:11,758 [OEDB] [INFO] Setting up static file serving +Traceback (most recent call last): + File "backend.py", line 78, in + app = create_app() + ^^^^^^^^^^^^ + File "backend.py", line 48, in create_app + app.add_static_route('/static/', static_dir) + File "/home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/lib/python3.12/site-packages/falcon/app.py", line 732, in add_static_route + sr = self._STATIC_ROUTE_TYPE( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/home/poule/encrypted/stockage-syncable/www/development/html/oedb-backend/venv/lib/python3.12/site-packages/falcon/routing/static.py", line 199, in __init__ + raise ValueError('directory must be an absolute path') +ValueError: directory must be an absolute path +unable to load app 0 (mountpoint='') (callable not found or import error) +*** no app loaded. going in full dynamic mode *** +*** uWSGI is running in multiple interpreter mode *** +gracefully (RE)spawned uWSGI master process (pid: 261037) +spawned uWSGI worker 1 (pid: 270552, cores: 1) +spawned uWSGI http 1 (pid: 270553) +Sun Sep 21 16:41:12 2025 - uWSGI worker 1 error: the master disconnected from this worker. Shutting down the worker. +Sun Sep 21 16:41:15 2025 - uWSGI worker 1 error: the master disconnected from this worker. Shutting down the worker.