Gofer.NET Save

Easy C# API for Distributed Background Tasks/Jobs for .NET Core.

Project README

Gofer.NET: Easy distributed tasks/jobs for .NET Core

Build Status Nuget Version Number Join the chat at https://gitter.im/Gofer-NET/Lobby


Read the Docs

What is this?

This is a distributed job runner for .NET Standard 2.0 Applications.

Inspired by Celery for Python, it allows you to quickly queue code execution on a worker pool.

  • Use natural expression syntax to queue jobs for execution.

  • Queued jobs are persisted, and automatically run by the first available worker.

  • Scale your worker pool by simply adding new nodes.

  • Backed by Redis, all tasks are persistent.

Getting Started

Install the dotnet cli.

We recommend using the dotnet cli to get started, but it's not a necessity.

The dotnet cli is part of the .NET Core SDK.

Start a Redis instance.

We recommend using docker to start a local Redis instance for testing. Setting up a production-level Redis instance is out of the scope of this documentation.

$ docker run -d -p redis:4-alpine

Create a project.

Open up a terminal and create a new console project to get started.

$ mkdir myProject && cd myProject
$ dotnet new console

Add the Gofer.NET NuGet package.

$ dotnet add package Gofer.NET --version 1.0.0-*

Queue up some jobs.

This example Program.cs shows how to queue jobs for the worker pool to process, then start a worker to go and run them.

Some important notes:

  • Workers would usually be on a separate machine from the code queueing the jobs, this is purely to give an example.

  • More workers can be added at any time, and will start picking up jobs off the queue immediately.

public class Program
    public static async Task Main(string[] args)
        var redisConnectionString = "";
        // Create a Task Client connected to Redis
        var taskClient = new TaskClient(TaskQueue.Redis(redisConnectionString));
        // Queue up a Sample Job
        await taskClient.TaskQueue.Enqueue(() => SampleJobFunction("Hello World!"));
        // Start the task listener, effectively turning this process into a worker.
        // NOTE: This will loop endlessly waiting for new tasks.
        await taskClient.Listen();
    private static void SampleJobFunction(object value)

Read the Docs for more details.

Open Source Agenda is not affiliated with "Gofer.NET" Project. README Source: brthor/Gofer.NET
Open Issues
Last Commit
1 month ago

Open Source Agenda Badge

Open Source Agenda Rating