AIOHTTP:TypeError: index() takes 0 positional arguments but 1 was given
AIOHTTP:TypeError: index() takes 0 positional arguments but 1 was given
from aiohttp import web
import aiohttp
from settings import config
import asyncio
import psycopg2 as p
import json
import aiopg
import aiohttp
import asyncio
async def fetch(client):
async with client.get('https://jsonplaceholder.typicode.com/todos/1') as resp:
assert resp.status == 200
return await resp.json()
async def index():
async with aiohttp.ClientSession() as client:
html = await fetch(client)
return web.Response(html)
loop = asyncio.get_event_loop()
loop.run_until_complete(index())
这是我的views.py
from aiohttp import web
from routes import setup_routes
from settings import config
app = web.Application()
setup_routes(app)
web.run_app(app,port=9090)
main.py
from views import index
def setup_routes(app):
app.router.add_get('/', index)
这是我的 routes.py
但是每当我尝试触发 localhost:9090 的 url 时,我只会收到内部服务器 500 错误
说
TypeError: index() takes 0 positional arguments but 1 was given
但是我可以在终端中打印 json 但无法触发与浏览器中的网络响应相同的方式 我不知道在这种情况下有什么问题
您的 index()
异步函数应接受 request
参数以兼容网络处理程序。
您的 index
协程是一个 handler, so it must accept a single positional argument, which will receive a Request
实例。例如:
async def index(request):
async with aiohttp.ClientSession() as client:
html = await fetch(client)
return web.Response(html)
views.py
顶层的 loop.run_until_complete(index())
是不必要的,一旦 index()
被正确定义就不会起作用。
from aiohttp import web
import aiohttp
from settings import config
import asyncio
import psycopg2 as p
import json
import aiopg
import aiohttp
import asyncio
async def fetch(client):
async with client.get('https://jsonplaceholder.typicode.com/todos/1') as resp:
assert resp.status == 200
return await resp.json()
async def index():
async with aiohttp.ClientSession() as client:
html = await fetch(client)
return web.Response(html)
loop = asyncio.get_event_loop()
loop.run_until_complete(index())
这是我的views.py
from aiohttp import web
from routes import setup_routes
from settings import config
app = web.Application()
setup_routes(app)
web.run_app(app,port=9090)
main.py
from views import index
def setup_routes(app):
app.router.add_get('/', index)
这是我的 routes.py
但是每当我尝试触发 localhost:9090 的 url 时,我只会收到内部服务器 500 错误 说
TypeError: index() takes 0 positional arguments but 1 was given
但是我可以在终端中打印 json 但无法触发与浏览器中的网络响应相同的方式 我不知道在这种情况下有什么问题
您的 index()
异步函数应接受 request
参数以兼容网络处理程序。
您的 index
协程是一个 handler, so it must accept a single positional argument, which will receive a Request
实例。例如:
async def index(request):
async with aiohttp.ClientSession() as client:
html = await fetch(client)
return web.Response(html)
views.py
顶层的 loop.run_until_complete(index())
是不必要的,一旦 index()
被正确定义就不会起作用。