Pergunta

Eu uso o Sidekiq para executar um método atrasado no controlador (enquanto isso, uso o Redis para atualizar uma barra de progresso).Este método chama um servidor, recupera os dados, faz algumas manipulações e cálculos;então pode demorar um pouco.

Por exemplo, eu tenho este método:

data_and_status = MyModelName.delay.retrieve_data(params[:tags], "preview", current_user, params[:from], params[:to])

Este método deveria retornar os dados manipulados, mas fazendo desta forma data_and_status é um hash (acho que é o Sidekiq-job-id).Os dados retornados são muito grandes, infelizmente, fazer algum cache com Redis está fora de questão.

Como posso recuperar um return value de um trabalho atrasado (método)?

Foi útil?

Solução

Você diz que os dados retornados (do seu trabalho assíncrono) são muito grandes e retransmiti-los via Redis está fora de questão.Bem, seu trabalho sidekiq é executado em um processo diferente, possivelmente até em um servidor diferente, então você deve encontrar alguma maneira entre processos de transferir os dados - se não sua fila de mensagens (Redis), então o banco de dados.

Por exemplo:

enter image description here

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top