きっかけ
flaskを起動しつつ、他の処理をさせたいことがあったので、なんとかならないかなと書いてみました。とりあえず動いたので公開します。長時間の検証はしていません。
動作環境
Python 3.9.1
flask 1.1.2
flask_hogehoge.py
from flask import Flask
from multiprocessing import Process
import datetime
import time
app = Flask(__name__)
@app.route('/')
def index():
return "Hello World!"
def hogehoge():
i = 0
while True:
print("{}, {}".format(i, datetime.datetime.now()))
i += 1
time.sleep(10)
def run(**kwargs):
app.run(**kwargs)
if __name__ == '__main__':
server = Process(target = run, kwargs = {'host': '0.0.0.0', 'port': 5001, 'threaded': True})
server.start()
hogehoge()
解説
-
def hogehoge()
に、flask起動後に処理したい内容を書きます。 -
server = Process(...
のところは、
target = app.run, kwargs = {...
と書いたのですが、app.runにうまく引数が渡せなかったので、
def run(**kwargs)
でapp.run
とし、
target = run, kwargs = {...
としています。