【问题标题】:Can I use curio with sanic. Why not?我可以将古玩与 sanic 一起使用吗?为什么不?
【发布时间】:2017-06-19 21:59:55
【问题描述】:

我尝试在Python 3.6 上的sanic 应用程序中使用异步原始套接字 并且真的很惊讶 curio 的异步函数在 sanic 异步上下文中不起作用。最小的概念证明:

import curio
from sanic import Sanic
from sanic.response import text
app = Sanic(__name__)


@app.route('/')
async def index(request):
    sock = await curio.open_connection("google.com", 443, ssl=True)
    resp = await sock.recv(1024)
    return text(resp)


app.run(host="0.0.0.0", port=5001)

此代码在任何 http 请求上生成核心转储

$ python3 test2.py 
2017-04-17 17:33:13,266: INFO: Goin' Fast @ http://0.0.0.0:5001
2017-04-17 17:33:13,270: INFO: Starting worker [93060]
Fatal Python error: GC object already tracked

Current thread 0x00007fc57706e480 (most recent call first):
  File "/usr/lib/python3.6/linecache.py", line 165 in lazycache
  File "/usr/lib/python3.6/traceback.py", line 345 in extract
  File "/usr/lib/python3.6/traceback.py", line 497 in __init__
  File "/usr/lib/python3.6/traceback.py", line 117 in format_exception
  File "/usr/lib/python3.6/traceback.py", line 163 in format_exc
  File "/usr/lib/python3.6/site-packages/sanic/handlers.py", line 93 in default
  File "/usr/lib/python3.6/site-packages/sanic/handlers.py", line 70 in response
  File "/usr/lib/python3.6/site-packages/sanic/app.py", line 472 in handle_request
  File "/usr/lib/python3.6/site-packages/sanic/server.py", line 410 in serve
  File "/usr/lib/python3.6/site-packages/sanic/app.py", line 561 in run
  File "test2.py", line 14 in <module>
Aborted (core dumped)

【问题讨论】:

    标签: python python-3.x async-await python-asyncio sanic


    【解决方案1】:

    为了将此问题与 github 问题联系起来,由 OP 提出。

    Using curio in sanic controller.

    总结(来自问题 cmets):

    来自 Curio 官方文档: “Curio 还可以向 asyncio 事件循环提交工作,前提是它必须在不同的线程中单独运行。”

    Look at this issue

    Curio 的主要事件实现是队列,而不是事件循环。您正在尝试在 Sanic(和事件循环)运行的同一线程中生成任务。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-31
      • 2016-05-21
      • 2023-03-25
      • 2020-08-04
      • 2018-10-23
      • 2011-02-22
      • 2021-03-16
      相关资源
      最近更新 更多