У меня есть простой опоки приложение, скажем так:Невозможно настроить Gunicorn служить приложение опоки работает еще один цикл одновременно
# app.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
У меня также есть слабина ЪоТ сообщения Чтение
#bot.py
def serve(self):
while True:
message, channel = self.parse_slack_output(self.slack_client.rtm_read())
if message and channel:
self.handle_message(message, channel)
time.sleep(self.READ_WEBSOCKET_DELAY)
I хотите, чтобы оба кода запускались одновременно. Таким образом, в app.py
я:
#app.py
if __name__ == "__main__":
import threading
import bot
flask_process = threading.Thread(target=app.run)
bot_process = threading.Thread(target=bot.serve)
bot_thread.start()
flask_thread.start()
Этот код работает, как ожидалось с $ python app.py
, Но когда я приношу в gunicorn
бот нить не похоже на работу.
Я попытался:
gunicorn app:app
gunicorn --workers=2 app:app
gunicorn --threads=2 app:app
Я также попытался multiprocessing
библиотеки и получил те же результаты.
Любая идея, как можно решить эту проблему? Благодарю.
Редактировать: Теперь я понимаю, как хромой этот вопрос. Я не должен писать код в блоке if __name__ = "__main__":
. Это не то, что работает gunicorn
. Он напрямую подбирает приложение и запускает его. Все еще нужно понять, как заставить обработать поток ботов.