made inbox processing more async

This commit is contained in:
Vincent Cloutier 2022-12-28 10:30:58 -05:00
parent e7197f3054
commit a9b3bc8da9

View file

@ -63,26 +63,32 @@ namespace BirdsiteLive.Pipeline.Processors
private async Task ProcessFollowersWithSharedInboxAsync(ExtractedTweet[] tweets, List<Follower> followers, SyncTwitterUser user) private async Task ProcessFollowersWithSharedInboxAsync(ExtractedTweet[] tweets, List<Follower> followers, SyncTwitterUser user)
{ {
var followersPerInstances = followers.GroupBy(x => x.Host); var followersPerInstances = followers.GroupBy(x => x.Host);
List<Task> todo = new List<Task>();
foreach (var followersPerInstance in followersPerInstances) foreach (var followersPerInstance in followersPerInstances)
{ {
try var t = Task.Run( async () =>
{ {
_logger.LogInformation("Sending " + tweets.Length + " tweets from user " + user.Acct + " to instance " + followersPerInstance.Key); try
await _sendTweetsToSharedInbox.ExecuteAsync(tweets, user, followersPerInstance.Key, followersPerInstance.ToArray()); {
_logger.LogInformation("Sending " + tweets.Length + " tweets from user " + user.Acct + " to instance " + followersPerInstance.Key);
await _sendTweetsToSharedInbox.ExecuteAsync(tweets, user, followersPerInstance.Key, followersPerInstance.ToArray());
foreach (var f in followersPerInstance) foreach (var f in followersPerInstance)
await ProcessWorkingUserAsync(f); await ProcessWorkingUserAsync(f);
} }
catch (Exception e) catch (Exception e)
{ {
var follower = followersPerInstance.First(); var follower = followersPerInstance.First();
_logger.LogError(e, "Posting to {Host}{Route} failed", follower.Host, follower.SharedInboxRoute); _logger.LogError(e, "Posting to {Host}{Route} failed", follower.Host, follower.SharedInboxRoute);
foreach (var f in followersPerInstance) foreach (var f in followersPerInstance)
await ProcessFailingUserAsync(f); await ProcessFailingUserAsync(f);
} }
});
todo.Add(t);
} }
await Task.WhenAll(todo);
} }
private async Task ProcessFollowersWithInboxAsync(ExtractedTweet[] tweets, List<Follower> followerWtInbox, SyncTwitterUser user) private async Task ProcessFollowersWithInboxAsync(ExtractedTweet[] tweets, List<Follower> followerWtInbox, SyncTwitterUser user)