Open kexirong opened 2 years ago
What driver used?
aiomysql
@long2ice 大佬这个有解决方案吗?
你试试 https://github.com/long2ice/asyncmy 换了驱动,执行 migrate 一毛一样的输出 @long2ice
got Future <Task pending name='Task-7' coro=<Pool._wakeup() running at /home/kexirong/.cache/pypoetry/virtualenvs/qkacmdb-sanic-eYIlfS2d-py3.8/lib64/python3.8/site-packages/asyncmy/pool.py:164>> attached to a different loop
你不用poetry run 试试
你不用poetry run 试试
一样一样的,虽然试之前就知道poetry不会影响,还是听老哥的试了一下。 @long2ice
有点奇怪,我这边没问题
有点奇怪,我这边没问题
init-db 也没问题,错误信息中 attached to a different loop,是什么意思? 是tortoise 跟aerich 用了不同 loop 吗? tortoise 是默认使用uloop 还是需要额外的配置?
意思是启动了不同的loop,本来应该是一个线程只会有一个loop
项目早期,我的依赖只有以下这些
[tool.poetry.dependencies]
python = "^3.8"
tortoise-orm = {extras = ["asyncmy"], version = "^0.17.7"}
sanic = "^21.6.2"
sanic-jwt = "^1.7.0"
[tool.poetry.dev-dependencies]
aerich = "^0.5.8"
我执行init-db之后没有改动任何地方,出于测试migrate,仅注释掉其中一个 模型定义的一个字段。我很疑惑,init-db一切正常,而执行migrate就 runtime error
I have the same problem using poetry / virtualenv, aiomysql / asyncmy.
aerich == 0.5.8
tortoise-orm == 0.17.8
aerich init-db
creates initial migration, but onaerich migrate --name some_name
I have an issue:
Traceback (most recent call last): File "/home/horizon/PycharmProjects/test_migrations/venv/bin/aerich", line 8, in <module> sys.exit(main()) File "/home/horizon/PycharmProjects/test_migrations/venv/lib/python3.8/site-packages/aerich/cli.py", line 258, in main cli() File "/home/horizon/PycharmProjects/test_migrations/venv/lib/python3.8/site-packages/click/core.py", line 1128, in __call__ return self.main(*args, **kwargs) File "/home/horizon/PycharmProjects/test_migrations/venv/lib/python3.8/site-packages/click/core.py", line 1053, in main rv = self.invoke(ctx) File "/home/horizon/PycharmProjects/test_migrations/venv/lib/python3.8/site-packages/click/core.py", line 1659, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File "/home/horizon/PycharmProjects/test_migrations/venv/lib/python3.8/site-packages/click/core.py", line 1395, in invoke return ctx.invoke(self.callback, **ctx.params) File "/home/horizon/PycharmProjects/test_migrations/venv/lib/python3.8/site-packages/click/core.py", line 754, in invoke return __callback(*args, **kwargs) File "/home/horizon/PycharmProjects/test_migrations/venv/lib/python3.8/site-packages/click/decorators.py", line 26, in new_func return f(get_current_context(), *args, **kwargs) File "/home/horizon/PycharmProjects/test_migrations/venv/lib/python3.8/site-packages/aerich/cli.py", line 33, in wrapper loop.run_until_complete(f(*args, **kwargs)) File "uvloop/loop.pyx", line 1501, in uvloop.loop.Loop.run_until_complete File "/home/horizon/PycharmProjects/test_migrations/venv/lib/python3.8/site-packages/aerich/cli.py", line 91, in migrate ret = await command.migrate(name) File "/home/horizon/PycharmProjects/test_migrations/venv/lib/python3.8/site-packages/aerich/__init__.py", line 115, in migrate return await Migrate.migrate(name) File "/home/horizon/PycharmProjects/test_migrations/venv/lib/python3.8/site-packages/aerich/migrate.py", line 138, in migrate return await cls._generate_diff_sql(name) File "/home/horizon/PycharmProjects/test_migrations/venv/lib/python3.8/site-packages/aerich/migrate.py", line 110, in _generate_diff_sql version = await cls.generate_version(name) File "/home/horizon/PycharmProjects/test_migrations/venv/lib/python3.8/site-packages/aerich/migrate.py", line 100, in generate_version last_version_num = await cls._get_last_version_num() File "/home/horizon/PycharmProjects/test_migrations/venv/lib/python3.8/site-packages/aerich/migrate.py", line 91, in _get_last_version_num last_version = await cls.get_last_version() File "/home/horizon/PycharmProjects/test_migrations/venv/lib/python3.8/site-packages/aerich/migrate.py", line 53, in get_last_version return await Aerich.filter(app=cls.app).first() File "/home/horizon/PycharmProjects/test_migrations/venv/lib/python3.8/site-packages/tortoise/queryset.py", line 966, in _execute instance_list = await self._db.executor_class( File "/home/horizon/PycharmProjects/test_migrations/venv/lib/python3.8/site-packages/tortoise/backends/base/executor.py", line 129, in execute_select _, raw_results = await self.db.execute_query(query.get_sql()) File "/home/horizon/PycharmProjects/test_migrations/venv/lib/python3.8/site-packages/tortoise/backends/mysql/client.py", line 44, in translate_exceptions_ return await func(self, *args) File "/home/horizon/PycharmProjects/test_migrations/venv/lib/python3.8/site-packages/tortoise/backends/mysql/client.py", line 204, in execute_query return cursor.rowcount, [] File "/home/horizon/PycharmProjects/test_migrations/venv/lib/python3.8/site-packages/tortoise/backends/base/client.py", line 308, in __aexit__ await self.pool.release(self.connection) RuntimeError: Task <Task pending name='Task-5' coro=<migrate() running at /home/horizon/PycharmProjects/test_migrations/venv/lib/python3.8/site-packages/aerich/cli.py:91> cb=[run_until_complete.<locals>.done_cb()]> got Future <Task pending name='Task-6' coro=<Pool._wakeup() running at /home/horizon/PycharmProjects/test_migrations/venv/lib/python3.8/site-packages/aiomysql/pool.py:188>> attached to a different loop Task was destroyed but it is pending! task: <Task pending name='Task-6' coro=<Pool._wakeup() running at /home/horizon/PycharmProjects/test_migrations/venv/lib/python3.8/site-packages/aiomysql/pool.py:188>> /usr/lib/python3.8/asyncio/base_events.py:641: RuntimeWarning: coroutine 'Pool._wakeup' was never awaited
What about try asyncmy?
What about try asyncmy?
应该是aerich 在migrate 时 启动了啥 导致sanic app被创建 ,我也依此思路解决了。但是上面的截图代码好像不会有这种问题,依然有这种问题 令人困惑
aerich
会读取tortoise配置所在文件同时会引入并且执行里面的代码,所以最好配置文件和其他文件分开,防止不必要的引入
aerich
会读取tortoise配置所在文件同时会引入并且执行里面的代码,所以最好配置文件和其他文件分开,防止不必要的引入
嗯, 但是 init-db 也会读取配置,没有问题,仅migrate 会有这样的问题, 建议优化下,或者文档中提示。这个问题出现概率不小
I solved my problem by splitting config files and removing any imports from aerich config.
这两天我也遇到这样的问题, 估计是跟引入的sanic的依赖有关, 今天特地切换了sanic和fastapi, 结果是 sanic venv 下有这个问题, fastapi venv没有, 应该是跟上面的描述一样 "What about try asyncmy?
应该是aerich 在migrate 时 启动了啥 导致sanic app被创建 ,我也依此思路解决了。但是上面的截图代码好像不会有这种问题,依然有这种问题 令人困惑"
I can't understand these error outputs
$ poetry run aerich migrate