Я пытаюсь запускать много (более 20) заданий в Heroku каждую минуту одновременно, но я уверен, что я делаю это неправильно.В настоящее время я использую динамо Standard-1X с 512 МБ ОЗУ.Я почти уверен, что смогу достичь своей цели, не улучшая героку.Мое решение вроде работает, но оно занимает много моей памяти и не выполняет все задачи одновременно.Может кто-нибудь помочь мне придумать лучшее решение?
Вот мой Rakefile:
Rails.application.load_tasks
task :update_exchanges_1 => :environment do
until 2 < 1 do
Rake::Task['exchange_markets_update:gdax'].execute
Rake::Task['exchange_markets_update:gemini'].execute
Rake::Task['exchange_markets_update:bitstamp'].execute
Rake::Task['exchange_markets_update:bitflyer'].execute
Rake::Task['exchange_markets_update:okex'].execute
Rake::Task['exchange_markets_update:cex'].execute
sleep(60.seconds)
end
end
task :update_exchanges_2 => :environment do
until 2 < 1 do
Rake::Task['exchange_markets_update:bitfinex'].execute
Rake::Task['exchange_markets_update:bittrex'].execute
Rake::Task['exchange_markets_update:hitbtc'].execute
Rake::Task['exchange_markets_update:poloniex'].execute
Rake::Task['exchange_markets_update:kraken'].execute
Rake::Task['exchange_markets_update:binance'].execute
Rake::Task['exchange_markets_update:bithumb'].execute
sleep(60.seconds)
end
end
task :update_exchanges_3 => :environment do
until 2 < 1 do
Rake::Task['exchange_markets_update:gateio'].execute
Rake::Task['exchange_markets_update:idex'].execute
Rake::Task['exchange_markets_update:bitbank'].execute
Rake::Task['exchange_markets_update:zb'].execute
Rake::Task['exchange_markets_update:bibox'].execute
Rake::Task['exchange_markets_update:ethfinex'].execute
sleep(60.seconds)
end
end
Таким образом, в принципе, каждая задача вызывается бесконечно и используется для вызова нескольких внешних API, которые используютсяобновить мою базу данных.Каждая задача exchange_markets_update занимает около 10-15 секунд.
Вот мой Procfile (я использую гем foreman, чтобы я мог запускать процессы внутри процесса):
web: bundle exec rails server -p $PORT
worker: bundle exec foreman start -f Procfile.workers
Вот мой профиль.workers:
dj_worker: bundle exec rake update_exchanges_1
dj_worker: bundle exec rake update_exchanges_2
dj_worker: bundle exec rake update_exchanges_3
Также важно отметить, что мой работник падает через некоторое время.Любая помощь будет принята с благодарностью!