Olá a todos,
Tendo alguns problemas em execução com o sinalizador --pid
. Parece que sempre que uso esse sinalizador, o gunicorn não consegue iniciar. Sem a bandeira não há problemas. Aqui está o erro. Parece que o gunicorn está tentando renomear o pidfile temporário para 'bzpid' neste caso, mas não pode porque está ocupado. Talvez haja algo acessando o arquivo? Mas eu não podia imaginar o que...
vagrant@basezero-nightly :/vagrant/client$ cd /vagrant/server
vagrant@basezero-nightly :/vagrant/server$ export BASEZERO_FLASK_SETTINGs=/vagrant/server/prodconfig.py
vagrant@basezero-nightly :/vagrant/server$ gunicorn --pid bzpid basezero_ flask:app
[2017-05-31 13:44:12 +0000] [20613] [INFO] Iniciando o gunicorn 19.7.1
Traceback (última chamada mais recente):
Arquivo "/usr/local/bin/gunicorn", linha 11, em
sys.exit(run())
Arquivo "/usr/local/lib/python3.5/dist-packages/gunicorn/app/wsgiapp.py", linha 74, em execução
WSGIApplication("%(prog)s [OPÇÕES] [APP_MODULE]").run()
Arquivo "/usr/local/lib/python3.5/dist-packages/gunicorn/app/base.py", linha 203, em execução
super(Aplicativo, self).run()
Arquivo "/usr/local/lib/python3.5/dist-packages/gunicorn/app/base.py", linha 72, em execução
Árbitro(auto).run()
Arquivo "/usr/local/lib/python3.5/dist-packages/gunicorn/arbiter.py", linha 198, em execução
self.start()
Arquivo "/usr/local/lib/python3.5/dist-packages/gunicorn/arbiter.py", linha 139, no início
self.pidfile.create(self.pid)
Arquivo "/usr/local/lib/python3.5/dist-packages/gunicorn/pidfile.py", linha 39, em create
os.rename(fname, self.fname)
OSError: [Errno 26] Arquivo de texto ocupado: '/vagrant/server/tmpz5qc_vy3' -> 'bzpid'
Obrigado pela ajuda.
Você está executando o vagrant no Windows por acaso? Nesse caso, talvez você esteja compartilhando o diretório com o Windows e o sistema de arquivos do Windows não pode suportar a renomeação enquanto estiver em uso.
Pode confirmar que isso também acontece com o Virtualbox
@akshaybabloo mas no Windows compartilhando um diretório também?
Sim, mas acho que é um problema com o Virtualbox (basicamente qualquer coisa que não seja o software da Microsoft), o Windows bloqueia qualquer arquivo que não seja gerado com o Hyper-V. Se você mudar para o Hyper-V, não terá esse problema.
Mas você terá outro problema, o Hyper-v tende a confundir entre várias VMs rodando nele, eventualmente trava ou não faz nada. Acho que para superar isso talvez você precise criar uma nova rede virtual.
Comentários muito úteis
Você está executando o vagrant no Windows por acaso? Nesse caso, talvez você esteja compartilhando o diretório com o Windows e o sistema de arquivos do Windows não pode suportar a renomeação enquanto estiver em uso.