gpt4 book ai didi

python - sanic 事件循环和高速公路

转载 作者:太空宇宙 更新时间:2023-11-03 12:01:26 28 4
gpt4 key购买 nike

我有一个用 Sanic 编写的项目

application = Sanic(__name__)
...
application.run(host=application.config.HOST, port=application.config.PORT,
debug=application.config.DEBUG, log_config=application.config.LOG)

我的网站有一个实时操作部分

对于实时部分,我想使用 autobahn带有 sanic 循环

我有自定义聊天协议(protocol)

class ChatServerProtocol(WebSocketServerProtocol):
....

和聊天工厂:

class ChatFactory(WebSocketServerFactory):
...

然后我得到 sanic 事件循环并将工厂设置为 ChatFactory

async def after_server_start(app, loop):
factory = ChatFactory(u"ws://127.0.0.1:9000")
factory.protocol = ChatServerProtocol

loop.set_task_factory(factory)

上面的代码失败了:

Error: Bad Request
Traceback (most recent call last):
File "httptools/parser/parser.pyx", line 296, in httptools.parser.parser.cb_on_message_complete (httptools/parser/parser.c:4868)
File "/Users/XXX/Documents/Projects/sanic_env/lib/python3.6/site-packages/sanic/server.py", line 227, in on_message_complete
self.execute_request_handler()
File "/Users/XXX/Documents/Projects/sanic_env/lib/python3.6/site-packages/sanic/server.py", line 234, in execute_request_handler
self.stream_response))
File "uvloop/loop.pyx", line 1146, in uvloop.loop.Loop.create_task (uvloop/loop.c:24809)
TypeError: __call__() takes 1 positional argument but 3 were given

问题:

A:我可以在高速公路上使用 sanic 事件循环吗?

‌B:如果是,应该怎么做?

最佳答案

嗯。这是一个很难回答的问题。现在回答:不确定。

如果你看autobahn-python它指定它用于 twisted/asyncio,没有找到 uvloop 的提及。尽管我可能会补充一点,但我认为如果您与我的一位同事在 crossbar.io 上讨论这个讨论,那么将 uvloop 换成 asyncio 应该是可能的:https://github.com/crossbario/autobahn-python/issues/925 .

根据上述问题925您需要创建一个新的事件循环变量来利用 uvloop。

我自己还没有尝试过,希望对您有所帮助。

关于python - sanic 事件循环和高速公路,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47620582/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com