Executando o script python a partir das visualizações do django

1

Deseja executar um script python a partir das visualizações do django. E eu não quero esperar até a execução do script. O script python deve fazer seu trabalho em segundo plano e, enquanto isso, enviarei uma resposta ao cliente dizendo que "o script está sendo executado em segundo plano". Alguma idéia?

    
por Parthi 28.08.2015 / 08:47

2 respostas

0

subprocess.Popen é melhor se você quiser enviar uma resposta imediata. Mas certifique-se de que subprocess.Popen não esteja retornando nenhum valor. Ou seja, você tem que usar como abaixo:

subprocess.Popen(["python","test.py"], close_fds=True)

E use close_fds = True junto com isso, também ajuda melhor.

    
por Parthi 31.08.2015 / 09:01
1

Assim que você disser "faça isso em segundo plano", vou sugerir Aipo . Envolve executar o RabbitMQ como um daemon local que o Celery usa como armazenamento de dados intermediário e O Django pode pedir ao Celery para realizar tarefas .

Se você precisar rastrear o status, uma vez que você adicionar uma tarefa, você pode obter um UUID para ele e, em seguida, consultar o Celery para obter o status, e / ou apenas ter o Celery colocado o resultado no Django ORM padrão para você (ou use webhooks, ou seja o que for que os hipsters usem atualmente).

Isto é, claro, muito aprendizado e uma quantidade considerável de encargos contínuos por apenas executar algo em segundo plano. Você pode apenas fazer o caminho subprocess.Popen sujo . Você não irá capturar qualquer saída ou obter qualquer status ... Mas deve ser apenas sobre o trabalho.

    
por Oli 28.08.2015 / 09:27