Rate Limiting and Throttling
Security Considerations
/**
* Simple rate limiter for API calls
*/
const rateLimiter = {
lastCallTime: 0,
minInterval: 200, // 200ms = 5 calls per second
async limit<T>(fn: () => Promise<T>): Promise<T> {
const now = Date.now();
const timeToWait = this.lastCallTime + this.minInterval - now;
if (timeToWait > 0) {
await new Promise(resolve => setTimeout(resolve, timeToWait));
}
this.lastCallTime = Date.now();
return fn();
}
};
// Usage example
async function testBuyer() {
// Browse agents with rate limiting
const agents = await rateLimiter.limit(() =>
acpClient.browseAgent("aixbt", "hedgefund")
);
// Process each agent with rate limiting
for (const agent of agents) {
// Rate limit each API call
const details = await rateLimiter.limit(() =>
acpClient.getAgentDetails(agent.id)
);
// Do something with details...
}
// Initiate job with rate limiting
if (selectedOffering) {
const jobId = await rateLimiter.limit(() =>
selectedOffering.initiateJob(serviceRequirement, expiredAt)
);
}
}
Last updated