У меня есть очередь сообщений RabbitMQ, в которую я добавляю configuration.json
в очередь. Каждая из этих конфигураций имеет всю информацию, необходимую для запуска рабочего процесса. Поэтому, если в очереди есть 5 сообщений, мне нужно передать команды конфигурации 5 через моего потребителя, который запускает рабочий процесс.
Если я выйду из python скрипт, который порождает эти процессы, я также выхожу из процесса рабочего процесса. И это проблема.
В настоящее время:
subprocess.run(f'nextflow run nextflow/workflow_runner.nf -w "gs://nextflow-text-bucket/work" -c nextflow/nextflow.config --at_config {config_file} --csv {csv_dest} &', shell=True)
Здесь я просто добавляю символ &
в конец команды, чтобы она выполнялась в фоновом режиме. Как я могу изменить этот код так, чтобы мой python сценарий создал новый процесс, который отключен от этого потребителя.
ОСНОВНО, Как эффективно создать n число процессов, использующих сценарий python, которые не зависят от сценария, который их запустил. И у меня есть возможность войти в систему и подключиться к выводу каждого процесса.
Вот как выглядит вывод:
N E X T F L O W ~ version 20.01.0
Launching `nextflow/workflow_runner.nf` [pedantic_pauling] - revision: a8fe3d5045
executor > google-lifesciences (1)
[92/828e5d] process > prc1 [ 0%] 0 of 1
[- ] process > prc2 -
[- ] process > prc3 -
[- ] process > prc4 -
[- ] process > prc5 -
И обновляется по завершении каждого процесса. Таким образом, имея возможность начать это в bg, но иметь возможность "прикрепить" к нему и проверить, где он достигнут.