Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
aiohttp:服务单个静态文件_Http_Python Asyncio_Aiohttp - Fatal编程技术网

aiohttp:服务单个静态文件

aiohttp:服务单个静态文件,http,python-asyncio,aiohttp,Http,Python Asyncio,Aiohttp,如何使用aiohttp为单个静态文件(而不是整个目录)提供服务? 静态文件服务似乎被烘焙到路由系统中,但这只服务于整个目录 (我知道我最终应该使用类似nginx的东西来为生产环境中的静态文件提供服务。)目前没有内置的方法来实现这一点;然而,有一些计划正在进行中。我编写了一个应用程序,它处理客户端(角度路由器)上的uri 为了服务webapp,我使用了稍微不同的工厂: def index_工厂(路径、文件名): 异步def静态_视图(请求): #不需要前缀 路由=web.StaticRoute(无

如何使用aiohttp为单个静态文件(而不是整个目录)提供服务?

静态文件服务似乎被烘焙到路由系统中,但这只服务于整个目录


(我知道我最终应该使用类似nginx的东西来为生产环境中的静态文件提供服务。)

目前没有内置的方法来实现这一点;然而,有一些计划正在进行中。

我编写了一个应用程序,它处理客户端(角度路由器)上的uri

为了服务webapp,我使用了稍微不同的工厂:

def index_工厂(路径、文件名):
异步def静态_视图(请求):
#不需要前缀
路由=web.StaticRoute(无,“/”,路径)
请求。匹配信息['filename']=filename
返回等待路线。处理(请求)
返回静态视图
#json api
app.router.add_路由({'POST','GET'},/api/{collection},api_处理程序)
#其他静态
app.router.add_static('/static/',path='../static/',name='static')
#索引,为所有应用uls加载。
app.router.add_get('/{path:.*}',index_工厂(“../static/ht_docs/”,“index.html”))

目前,从aiohttp 2.0版开始,返回单个文件作为响应的最简单方法是使用未记录的(?)
FileResponse
对象,用文件路径初始化,例如

从aiohttp导入网站
异步定义索引(请求):
返回web.FileResponse(“./index.html”)
#包含处理程序路径
应用程序['static\u root\u url']='/static'
#静态文件的路径目录
STATIC\u PATH=os.PATH.join(os.PATH.dirname(\u文件\u),“STATIC”)
app.router.add_static('/static/',static_PATH,name='static')
#包含在模板中
# include handler path
app['static_root_url'] = '/static'    

# path dir of static file
STATIC_PATH = os.path.join(os.path.dirname(__file__), "static")    
app.router.add_static('/static/', STATIC_PATH, name='static')

# include in template
<link href="{{static('/main.css')}}" rel="stylesheet">