AsyncIO python3.4 restserver

比特

我正在尝试使用python 3.4中的asyncio模块实现一个简单的Restful服务器,并且无法访问我已定义的端点。当我在URL(http://127.0.0.1:8080/v1/queue)上执行CURL(GET请求)时,服务器收到空响应。我认为我的asyncio基本类设置存在一些问题。有人可以指出吗?CURL是否需要使用aiohttp发送请求的asyncio方式实现?

这是我的代码:

  4 import asyncio
  5 import aiorest
  6 import json
  8 
 10 
 11 class Sample(aiorest.RESTServer):
 12 
 13     def _init__(self, *args, **kwargs):
 14         super().__init__(*args, **kwargs)
 15         self.add_url('GET', '/v1/queue', self.get_handler)
 16         self.add_url('POST', '/v1/stack', self.post_handler)

 19     def get_handler(self, request):
 20         return {'Welcome': 'user'}
 21 
 22     def post_handler(self, request, payload):
 23         if not payload:
 24             return {'error': 'Payload not supplied'}
 25 
 26         try:
 27             json_payload = json.loads(payload)
 28         except ValueError:
 29             return {'error': 'Invalid JSON supplied'}
 30         print('Payload received {0}'.format(json_payload))
 32         return {'Payload Received Success'}
 33 
 34 
 35 def main():
 36     loop = asyncio.get_event_loop()
 37     server = Sample(hostname='127.0.0.1', loop=loop)
 38     srv = loop.run_until_complete(loop.create_server(
 39         server.make_handler, '127.0.0.1', 8080))
 40     print('Server listening on port 8080')

 44     try:
 45         loop.run_forever()
 46     except KeyboardInterrupt:
 47         pass
 48     finally:
 49         srv.close()
 50         loop.run_until_complete(srv.wait_closed())
 51         loop.close()
 52 
 53 
 54 if __name__ == '__main__':
 55     main()
石英

代码不起作用的原因是Sample类构造函数中的简单错字_init__而不是__init__修复此问题后,所有内容均应按预期工作。

编辑

该处理程序方法应该只希望有request参数,body可以从pass获得request

def post_handler(self, request):
    payload = request._request_body.decode('utf-8')
    if not payload:
        return {'error': 'Payload not supplied'}

    try:
        json_payload = json.loads(payload)
    except ValueError:
        return {'error': 'Invalid JSON supplied'}
    print('Payload received {0}'.format(json_payload))
    return {'result': 'Payload Received Success'}

暗示

顺便说一下,aiorest的发展已经停止了

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Codeigniter 3 + Restserver始终执行获取请求

来自分类Dev

Asyncio imap获取邮件python3

来自分类Dev

python3 asyncio 等待回调

来自分类Dev

Python3 Asyncio在并发任务之间共享资源

来自分类Dev

处理永不终止于python3 asyncio的任务

来自分类Dev

如何使用asyncio在python3中运行并行作业?

来自分类Dev

路由挂起中的Python3 Flask asyncio子进程

来自分类Dev

Python 3 asyncio-vs asyncio的收益

来自分类Dev

Codeigniter RESTServer会话

来自分类Dev

使用Python3 asyncio并发HTTP get请求不会关闭连接

来自分类Dev

Python3 asyncio“任务已销毁,但正在挂起”,具有某些特定条件

来自分类Dev

使用Python3 asyncio并发HTTP get请求不会关闭连接

来自分类Dev

Python asyncio简单示例

来自分类Dev

Python的asyncio同步工作

来自分类Dev

Python asyncio调试示例

来自分类Dev

发送邮件python asyncio

来自分类Dev

python asyncio aiohttp超时

来自分类Dev

asyncio(python)如何工作?

来自分类Dev

理解python中的asyncio

来自分类Dev

Python asyncio 等待任务

来自分类Dev

Python 3 Asyncio 协程相等

来自分类Dev

使用RestServer的Api密钥无效

来自分类Dev

从此元素获取链接| python3 BeautifulSoup4

来自分类Dev

Antlr4 Python3目标访客无法使用?

来自分类Dev

从QPushButton调用Python3 PyQt4

来自分类Dev

Python3 .4中List的格式化结果

来自分类Dev

Python3 asyncio生成新线程时线程中没有当前事件循环

来自分类Dev

asyncio python 3.6 代码到 asyncio python 3.4 代码

来自分类Dev

使用Slack bot的Python asyncio