Запуск Redis работника из Flask в качестве новой темы - PullRequest
0 голосов
/ 15 июня 2019

Я хотел бы запустить новых рабочих Redis (как новый поток) из интерфейса Flask.

Для этого у меня есть следующая функция (utils.py):

def start_worker():
    listen = ['default']
    redis_url = os.getenv('REDISTOGO_URL', 'redis://localhost:6379')
    conn = redis.from_url(redis_url)
    with Connection(conn):
        print('STARTING WORKER..')
        worker = Worker(Queue('default'), connection=conn, name='foo2')
        worker.work()

и следующий вызов вways.py:

#from threading import Thread #import threading # for starting worker as new thread)
from concurrent.futures import ThreadPoolExecutor
executor = ThreadPoolExecutor(max_workers=2)
@app.route('/')
@app.route('/index', methods=['GET','POST'])
@login_required
def index():
    form = WorkerForm()
    if form.validate_on_submit():
        #w = Thread(target=utils.start_worker)
        #w.daemon = True
        #w.start()
        executor.submit(utils.start_worker)
        return redirect(url_for('index'))

Теперь, когда я запускаю функцию start_worker() вручную из консоли, я вижу работника, регистрирующегося.

При вызове функции черезКолба, я вижу брошенный комментарий («НАЧИНАЮЩИЙ РАБОТНИК ..»).Но ни один работник не регистрируется.

Изначально я хотел запустить его как обычный поток (закомментированный код), но это приводит к ValueError: signal only works in main thread.

Чего мне здесь не хватает?Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...