feat: support concurrent Reddit accounts
This commit is contained in:
1 parent
d819a0f1e6
commit
16a31335d0
51 files changed
+3241
-250
No files matched your search
@@ -74,6 +74,10 @@ const ERROR_BACKOFF_MS = 60_000;
|
||||
* SIGINT/SIGTERM. Resolves once shutdown completes.
|
||||
*/
|
||||
export async function runMainLoop(app: AppContainer): Promise<void> {
|
||||
if (app.accountRuntimeManager) {
|
||||
await runConcurrentAccountRuntimes(app);
|
||||
return;
|
||||
}
|
||||
const {
|
||||
config,
|
||||
logger,
|
||||
@@ -407,3 +411,27 @@ export async function runMainLoop(app: AppContainer): Promise<void> {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async function runConcurrentAccountRuntimes(app: AppContainer): Promise<void> {
|
||||
const { logger, accountRuntimeManager, browserClient, db, webServer } = app;
|
||||
logger.info(`Running ${accountRuntimeManager.list().length} independent Reddit account runtime(s)`);
|
||||
await new Promise<void>((resolve) => {
|
||||
let shuttingDown = false;
|
||||
const shutdown = async (): Promise<void> => {
|
||||
if (shuttingDown) return;
|
||||
shuttingDown = true;
|
||||
logger.info('Stopping all Reddit account runtimes...');
|
||||
await accountRuntimeManager.stopAll();
|
||||
webServer?.stop();
|
||||
await browserClient.close();
|
||||
db.close();
|
||||
process.off('SIGINT', onSignal);
|
||||
process.off('SIGTERM', onSignal);
|
||||
logger.info('Goodbye!');
|
||||
resolve();
|
||||
};
|
||||
const onSignal = (): void => { void shutdown(); };
|
||||
process.on('SIGINT', onSignal);
|
||||
process.on('SIGTERM', onSignal);
|
||||
});
|
||||
}
|
||||
Reference in new issue
Block a user