capistrano / symfony

Capistrano tasks for deploying the Symfony standard edition
MIT License
354 stars 65 forks source link

Symfony messenger stop workers #125

Open davidrojo opened 2 years ago

davidrojo commented 2 years ago

Hi,

I am trying to include a tastk to restart symfony messenger once deployed the new code (https://symfony.com/doc/current/messenger.html#deploying-to-production)

But as this comment says (https://stackoverflow.com/questions/63508798/symfony-messenger-workers-do-not-stop-when-running-under-supervisor), the command must be executed in the "old" release path, not in the new release path

How can I execute the command in the previous release path?

I've created this task, but it is being executed in the new path:

namespace :deploy do
  desc 'Restart messenger'
  task :migrate do
    on roles(:app) do
      symfony_console('messenger:stop-workers')
    end
  end
end

before "symfony:cache:warmup", "deploy:migrate"
ChristianVermeulen commented 1 year ago

For anyone having the same issue, we do it manually like this and it seems to do the trick:

namespace :deploy do
  task :consumers do
    on roles(:db) do
        puts "#{release_path}"
        execute("cd #{release_path} && bin/console messenger:stop-workers")
    end
  end
end