There is some confusion
Using cron to run processes, not threads, so the problem with locks should be avoided, because every startup is its own process with its own address space. There may be problems with data integrity in the database.
Now about the implementation:
This is best done through a queue service like sidekiq.
How does it work?
Through the API, sidekiq, you can put task in the queue ( including put you and every minute, this can be specified in config), startup options are stored in redis (which need to be put on production). The foremost task of parsing must be set to 1 thread of execution.
Sidekiq on hanging out separate process in addition to the rails, just takes the top task from queue and executes it.
Thus, if the parsing more than a minute - simply increases in long queues. This value is monitored, but if it grows, the disaster will not.
You can do is probably using ActiveJob and in the main database - Rails, I haven't watched the innovations about it.