У меня есть замечательное приложение Flask, которое использует flask-rq2 для запуска фоновых задач - все отлично работает локально, но у меня возникают проблемы, когда я пытаюсь перейти на работу.Все выполняется в виртуальной среде на сервере Ubuntu 18.04, и я запускаю приложение Flask с помощью gunicorn, управляемое с помощью supervisord.Приложение Flask работает нормально, но работники RQ запускаются и быстро выходят из строя со следующей ошибкой, из-за которой создается впечатление, что я нахожусь за пределами виртуальной среды.
KeyError: <flask.cli.ScriptInfo object at 0x7f2c8ca77828>
Traceback (most recent call last):
File "/home/ceams_admin/ceams/venv/bin/flask", line 11, in <module>
sys.exit(main())
File "/home/ceams_admin/ceams/venv/lib/python3.6/site-packages/flask/cli.py", line 894, in main
cli.main(args=args, prog_name=name)
File "/home/ceams_admin/ceams/venv/lib/python3.6/site-packages/flask/cli.py", line 557, in main
return super(FlaskGroup, self).main(*args, **kwargs)
File "/home/ceams_admin/ceams/venv/lib/python3.6/site-packages/click/core.py", line 717, in main
rv = self.invoke(ctx)
File "/home/ceams_admin/ceams/venv/lib/python3.6/site-packages/click/core.py", line 1132, in invoke
cmd_name, cmd, args = self.resolve_command(ctx, args)
File "/home/ceams_admin/ceams/venv/lib/python3.6/site-packages/click/core.py", line 1171, in resolve_command
cmd = self.get_command(ctx, cmd_name)
File "/home/ceams_admin/ceams/venv/lib/python3.6/site-packages/flask/cli.py", line 515, in get_command
rv = info.load_app().cli.get_command(ctx, name)
File "/home/ceams_admin/ceams/venv/lib/python3.6/site-packages/flask/cli.py", line 377, in load_app
raise_if_not_found=False)
File "/home/ceams_admin/ceams/venv/lib/python3.6/site-packages/flask/cli.py", line 254, in locate_app
return find_best_app(script_info, module)
File "/home/ceams_admin/ceams/venv/lib/python3.6/site-packages/flask/cli.py", line 76, in find_best_app
app = call_factory(script_info, app_factory)
File "/home/ceams_admin/ceams/venv/lib/python3.6/site-packages/flask/cli.py", line 114, in call_factory
return app_factory(script_info)
File "/home/ceams_admin/ceams/app/__init__.py", line 29, in create_app
app.config.from_object(config[config_name])
Я попытался настроить файл конфигурации для супервизоранесколько разных способов, но в настоящее время решены следующие вопросы:
rq.conf
[program:rq]
directory=/home/ceams_admin/ceams
command=sh boot-workers.sh
process_name=%(program_name)s-%(process_num)s
numprocs=1
autostart=true
autorestart=true
stopsignal=TERM
stdout_logfile=/var/log/redis/redis_stdout.log
stderr_logfile=/var/log/redis/redis_stderr.log
stderr_logfile_maxbytes=10MB
stdout_logfile_maxbytes=10MB
, где boot-workers.sh
:
#!/bin/bash
set -eu
. venv/bin/activate
flask rq worker
Любые предложения о том, каклучше отладить или как запустить rq было бы здорово!