Current implementation recurring job scheduler wakes up every minute, fetches current schedule records, and creates new background jobs based on matched recurring jobs. If we simply change this implementation to wake up every second, we'll stress our storage with a high number of requests.
To avoid stressing, we can cache schedule records and update them each minute, for example. However, stale records will add a lot of fun cases, and we should think about them first.
On the other hand, I'm planning to implement support for constantly running processes with the following API:
public class MyProcess : IServerComponent
public void Execute(CancellationToken shutdownToken)
app.UseHangfireServer(new MyProcess()); // or so
So you'll have an option to define such a constantly running process and use it to create background jobs even every 100 milliseconds. Hangfire already have such an infrastructure, but it is internal now for some reasons. If you are interested, I can show how to extract it to simplify the development.