There's a lot to unpack here:
Lets start bottoms-up:
The point of api.resque.scheduler.master (which be be true || false) is that only one node in your cluster will be true at any moment. It uses pessimistic locking, so there also may be a few moments (default 3 min) where NO server could be acting as master. If there's something you want to only happen once thought your whole cluster, no matter how many nodes you have, use this method. This method uses a redis, so be sure that everyone is connected to the same Redis server.
The number of workers running on a NODE is set by api.config.tasks.minTaskProcessors and api.config.tasks.minTaskProcessors. I say "node", because you should be using `actionhero start cluster` to run more than one process per server (# nodes ~= number of CPU cores; assuming you have the RAM for it). Since tasks (just like web requests) are async, you can probably run more than one of them at a time, as you'll be spending most of the time waiting for an external service (database, etc). Setting this number is a function of your workload, but it's likely to be more than 1.
Regarding the frequency, that can be more technical explained as: "When I complete, if I'm successful, how long in the future should I enqueue my next instance to be run from now". So if you have a 5s job with a frequency of 1 min, you'll actually see the job run every 65 seconds. And yes, normal queue priority applies here, so if the queue you place these jobs into is long, or all workers are busy doing something else, it will take some time to get to the job in question. You can mitigate this for high-priority jobs via queue order and which queues collections of workers work on. You can assign all workers to work on * (default), or assign some explicitly to "high-priority" and the rest to *.
If you really do want "user-configurable" tasks, you have a few options. You can mess with `
api.tasks.jobs` directly in-memory of the server. You can also require your config file from with the task definition file and set it that way, i.e.: task.frequency = require(__dirname + '/../myConfig/tasks.js)[name_of_task].frequency