Reduce calls to getFeedGenerator and getFeed (#2166)

* Reduce calls to getFeedGenerator by the mergefeed

* Dont run end-of-follows mergefeed requests until actually at the end of the feed

* build AWS container

---------

Co-authored-by: Jake Gold <jake@blueskyweb.xyz>
This commit is contained in:
Paul Frazee 2023-12-11 12:58:34 -08:00 committed by GitHub
parent 3d229b5fd6
commit b82c5177b9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 72 additions and 27 deletions

View file

@ -62,7 +62,7 @@ export class MergeFeedAPI implements FeedAPI {
// always keep following topped up
if (this.following.numReady < limit) {
promises.push(this.following.fetchNext(60))
await this.following.fetchNext(60)
}
// pick the next feeds to sample from
@ -73,9 +73,13 @@ export class MergeFeedAPI implements FeedAPI {
}
// top up the feeds
for (const feed of feeds) {
if (feed.numReady < 5) {
promises.push(feed.fetchNext(10))
const outOfFollows =
!this.following.hasMore && this.following.numReady < limit
if (this.params.mergeFeedEnabled || outOfFollows) {
for (const feed of feeds) {
if (feed.numReady < 5) {
promises.push(feed.fetchNext(10))
}
}
}
@ -216,22 +220,10 @@ class MergeFeedSource_Custom extends MergeFeedSource {
super(feedTuners)
this.sourceInfo = {
$type: 'reasonFeedSource',
displayName: feedUri.split('/').pop() || '',
uri: feedUriToHref(feedUri),
uri: feedUri,
href: feedUriToHref(feedUri),
}
this.minDate = new Date(Date.now() - POST_AGE_CUTOFF)
getAgent()
.app.bsky.feed.getFeedGenerator({
feed: feedUri,
})
.then(
res => {
if (this.sourceInfo) {
this.sourceInfo.displayName = res.data.view.displayName
}
},
_err => {},
)
}
protected async _getFeed(

View file

@ -19,7 +19,7 @@ export interface FeedAPI {
export interface ReasonFeedSource {
$type: 'reasonFeedSource'
uri: string
displayName: string
href: string
}
export function isReasonFeedSource(v: unknown): v is ReasonFeedSource {