diff --git a/deploy/Caddyfile b/deploy/Caddyfile index 02ed1ce..c2d0c8b 100644 --- a/deploy/Caddyfile +++ b/deploy/Caddyfile @@ -4,6 +4,8 @@ { admin off + # The ACME account: expiry notices, and ZeroSSL (the fallback issuer) requires one. + email admin@saty.dev } saty.dev { diff --git a/src/server/regions.js b/src/server/regions.js index ad6e86f..0e25f4d 100644 --- a/src/server/regions.js +++ b/src/server/regions.js @@ -69,7 +69,10 @@ export class Regions { if (free && !g.free) continue; out.push(g); } - out.sort((a, b) => Number(b.free) - Number(a.free) || a.claimedBy.length - b.claimedBy.length || b.open - a.open || a.key.localeCompare(b.key)); + // A good region is one agent's batch: 5 to 80 open functions first, then bigger ones (share + // them, or take them in parts), then the tiny ones. + const size = (g) => (g.open >= 5 && g.open <= 80 ? 0 : g.open > 80 ? 1 : 2); + out.sort((a, b) => Number(b.free) - Number(a.free) || a.claimedBy.length - b.claimedBy.length || size(a) - size(b) || b.open - a.open || a.key.localeCompare(b.key)); return { total: out.length, regions: out.slice(0, Math.min(Math.max(1, limit | 0), 1000)) }; }