У меня есть flask -socketio app
(venv) ubuntu@ip-172-31-18-21:~/code$ more app.py
from flask_socketio import SocketIO, send, emit
from flask import Flask, render_template, url_for, copy_current_request_context
from time import sleep
from threading import Thread, Event
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app, async_mode='gevent')
thread = Thread()
thread_stop_event = Event()
def firstFunction():
print("*** First function")
def backgroundTask():
while not thread_stop_event.isSet():
socketio.emit('bg-socketio', {'data':'background-data'}, namespace='/', broadcast=True)
socketio.sleep(2)
def startBackgroundTask():
global thread
if not thread.is_alive():
thread = socketio.start_background_task(backgroundTask)
@app.route('/')
def main():
return render_template('index.html', title='SocketIO')
@socketio.on('connect_event', namespace='/')
def handle_message_client_connected(message):
print("*** Client connected")
emit('c-socketio', {'data':' you connected!'}, namespace='/')
if __name__ == '__main__':
firstFunction()
startBackgroundTask()
socketio.run(app, host='0.0.0.0', port=5000)
Я хочу, чтобы firstFunction () и startBackgroundTask () запускались при каждом запуске приложения.
Как лучше всего запускать это на uWSGI? Я безуспешно пытался сделать это, продолжаю получать ошибки https://flask-socketio.readthedocs.io/en/latest/#uwsgi -web-server
Ошибка: * работает движок gevent l oop [адрес: 0x5561d3f745a0] * ЧЕРТ! рабочий 1 (pid: 13772) умер :( пытается возродиться ... рабочий возрождается слишком быстро !!! Мне нужно немного поспать (2 секунды) ... Возродился рабочий uWSGI 1 (новый pid: 13773)
Также пробовал это
uwsgi --socket 0.0.0.0:5000 --protocol=http --enable-threads -w wsgi:app
(venv) ubuntu@ip-172-31-18-21:~/code$ more wsgi.py
from uapp import app
if __name__ == "__main__":
app.run()
с изменением uapp.py на
if __name__ == '__main__':
firstFunction()
startBackgroundTask()
app.run(host='0.0.0.0', port=5000)
, но это не запускает firstFunction () или startBackgroundTask ()
Я симпатичный сильно застрял, ищу предложения.