我改进了去年的应用程序。一开始有两个不同的 python 应用程序——第一个用于统计数据,第二个——带有 GET 请求的网络服务器 gunicorn+flask。(这两种服务都在 centos 中)Statistics 进行计数并将所有内容存储在 Postgres 中。Web 服务器连接到该 Postgres 数据库并响应 GET 请求。
在重写的版本中,我使用 pandas 框架进行了所有统计,现在我想将这两个应用程序合并为一个。我使用 asyncio 来获取数据和计数统计。一切正常,现在我要添加 Web 服务器以响应 GET。
部分代码:
import asyncio
from contextlib import closing
import db_cl, tks_db
from formdf_cl import FormatDF
getinfofromtks = tks_db.TKS() # Class object to connect to third party database
formatdf = FormatDF() # counting class object, that stores some data
dbb = db_cl.MyDatabase('mydb.ini') # Class object to connect to my database
async def get_some_data():
# getting information from third party database every 5 seconds.
await asyncio.sleep(5)
ans_inc, ans_out = getinfofromtks.getdf()
return ans_inc, ans_out # two huge dataframes in pandas
async def process(ans_inc, ans_out):
# counting data on CPU
await asyncio.sleep(0)
formatdf.leftjoin(ans_inc, ans_out)
# storing statistics in my Database
dbb.query_database('INSERT INTO statistic (timestamp, outgoing, incoming, stats) values (%s, %s,%s, %s)',
formatdf.make_count())
dbb.commit_query()
async def main():
while True:
ans_inc, ans_out = await get_some_data() # blocking, get data from third party database
asyncio.ensure_future(process(ans_inc, ans_out)) # computing
if __name__ == "__main__":
with closing(asyncio.get_event_loop()) as event_loop:
event_loop.run_until_complete(main())
现在我希望将 http 服务器添加为线程应用程序(使用 flask 或 aiohttp),它将使用类对象“formatdf”中的参数响应 GET 请求。包含这些功能的最佳方式是什么?
ITMISS
胡说叔叔
精慕HU
随时随地看视频慕课网APP
相关分类