我是Python新手,我正在尝试创建一个服务。
我使用Flask创建了一个服务,它可以很好地处理串行请求,但是当出现多个请求时,它会显示出一些奇怪的行为。在我的实际应用程序中,我观察到的是,当多个请求频繁出现时,其他调用等待第一个调用完成,然后并行执行。
我试图复制这种行为,并取得了一些成功。
下面是示例代码:
from flask import Flask
from waitress import serve
import datetime
import pandas as pd
app = Flask(__name__)
@app.route("/get_data/")
def get_data():
print("Request received at: " + str(datetime.datetime.now()))
file_path = "D:\15MB_Data.csv"
t1 = datetime.datetime.now()
data_frame = pd.read_csv(file_path, ",")
print("Starting processing after reading file at: " + str(datetime.datetime.now()))
doSomeHeavyWork()
t2 = datetime.datetime.now()
init_time = 'Time in Initialization : ' + str((t2 - t1)) + ". Completed at " + str(datetime.datetime.now())
print(init_time)
return init_time
def doSomeHeavyWork():
current_time_plus5 = datetime.datetime.now() + datetime.timedelta(0, 5)
while datetime.datetime.now() < current_time_plus5:
i = 0
return 1
serve(app, host="0.0.0.0", port=5002)要调用我使用的get_data函数:
http://127.0.0.1:5002/get_data此示例代码的输出是:
Request received at: 2021-11-10 15:26:32.482249
Starting processing after reading file at: 2021-11-10 15:26:32.875022
Request received at: 2021-11-10 15:26:33.112884
Request received at: 2021-11-10 15:26:33.485669
Request received at: 2021-11-10 15:26:33.804485
Starting processing after reading file at: 2021-11-10 15:26:36.032274
Starting processing after reading file at: 2021-11-10 15:26:36.438055
Starting processing after reading file at: 2021-11-10 15:26:37.089661
Time in Initialization : 0:00:05.444947. Completed at 2021-11-10 15:26:37.927196
Time in Initialization : 0:00:07.936492. Completed at 2021-11-10 15:26:41.049376
Time in Initialization : 0:00:08.023461. Completed at 2021-11-10 15:26:41.509130
Time in Initialization : 0:00:08.302279. Completed at 2021-11-10 15:26:42.120756在您可以清楚看到的输出中,第二个请求是在2021-11-10 15:26:33.112884接收到的,但它在2021-11-10 15:26:36.032274上开始处理,其他呼叫也在等待到那时。
为了开发目的,我在Windows 10上使用pycharm。我认为这可能是由于开发环境的原因,所以我尝试在Ubuntu上托管应用程序,也使用Nginx,但仍然没有成功。
有人能让我知道在不等待第一个调用完成的情况下执行这些请求应该做些什么吗?
https://stackoverflow.com/questions/69911441
复制相似问题