import asyncio
import datetime
import random
from functools import wraps, partial
import plotly.express as px
def async_wrap(func):
@wraps(func)
async def run(*args, loop=None, executor=None, **kwargs):
if loop is None:
loop = asyncio.get_event_loop()
pfunc = partial(func, *args, **kwargs)
return await loop.run_in_executor(executor, pfunc)
return run
@async_wrap
def get_plot_bytes() -> bytes:
now = datetime.datetime.now()
data = {now.replace(day=now.day + i): random.randint(1, 10) for i in range(10)}
fig = px.area(x=list(data.keys()), y=list(data.values()), title='Статистика покупок')
fig.update_layout(xaxis_title="Дата", yaxis_title="Количество покупок")
return fig.to_image('png')
async def main():
await get_plot_bytes()
if __name__ == '__main__':
asyncio.new_event_loop().run_until_complete(main())
2022/10/11 08:39:40 [crit] 6672#6672: *266 connect() to unix:/home/sites/api/gunicorn.sock/ failed (13: Permission denied) while connecting to upstream, client: {client_host}, server: {server_host}, request: "GET /api/rates HTTP/1.1", upstream: "http://unix:/home/sites/api/gunicorn.sock/:/api/rates", host: "{server_host}"