import express from 'express';
const app = express();
const keywordsAi = new KeywordsAITelemetry({
apiKey: process.env.KEYWORDSAI_API_KEY,
appName: 'api-server'
});
await keywordsAi.initialize();
app.get('/api/data', async (req, res) => {
await keywordsAi.withWorkflow(
{ name: 'api_request' },
async () => {
const data = await fetchData();
res.json(data);
}
);
});
const server = app.listen(3000, () => {
console.log('Server running on port 3000');
});
// Graceful shutdown
async function gracefulShutdown() {
console.log('Shutting down gracefully...');
// Stop accepting new requests
server.close(async () => {
console.log('HTTP server closed');
// Shutdown tracing
await keywordsAi.shutdown();
console.log('Tracing shutdown complete');
process.exit(0);
});
// Force exit after 10 seconds
setTimeout(() => {
console.error('Forced shutdown after timeout');
process.exit(1);
}, 10000);
}
process.on('SIGTERM', gracefulShutdown);
process.on('SIGINT', gracefulShutdown);