Python Django:如何在数据迁移中使用异步任务?

Python Django:如何在数据迁移中使用异步任务?,python,django,django-models,Python,Django,Django Models,我正在尝试使用数据迁移填充数据库,但我面临运行时警告,并且数据未插入 在我的填充函数中,我尝试在api调用中使用Async Await,方法如下: 异步定义填充表(应用程序、架构编辑器): 一些东西。。。 等待api_调用_1()。。。 对于范围()中的i: 等待api_调用_2()#for循环内部的api调用(异步内部同步是否可以?)# model.save() 然后,我在我的迁移课上: 类迁移(migrations.Migration): 依赖项=[ (“myapp”、“上一次迁移”),

我正在尝试使用数据迁移填充数据库,但我面临运行时警告,并且数据未插入

在我的填充函数中,我尝试在api调用中使用Async Await,方法如下:

异步定义填充表(应用程序、架构编辑器):
一些东西。。。
等待api_调用_1()。。。
对于范围()中的i:
等待api_调用_2()#for循环内部的api调用(异步内部同步是否可以?)#
model.save()
然后,我在我的迁移课上:

类迁移(migrations.Migration):
依赖项=[
(“myapp”、“上一次迁移”),
]
操作=[
RunPython(填充表)
]
运行迁移时会引发运行时警告:

RuntimeWarning: coroutine 'populate_table' was never awaited

因此,我尝试用Async/Await来修饰我的迁移类,但没有成功。我做了一些研究,似乎我需要使用事件循环。如何做到这一点?

使用asgiref的
async\u-to-sync
sync\u-to-async
似乎是一种可行的方法:

从asgiref.sync导入异步到同步,同步到异步
@异步到同步
异步定义转发函数(应用程序、架构编辑器):
等待api_调用_1()
对于范围()中的i:
等待api_调用_2()
等待同步到异步(model.save)()
需要访问数据库的同步函数应包装在
sync\u to\u async
中,然后等待

这可能有点乏味,因此一个好方法可能是像这样分离异步代码:

def forward_func(应用程序、架构编辑器):
@异步到同步
def从api()获取数据:
...
api_data=从_api()获取_数据
...
model.save()

使用asgiref的
async\u to\u sync
sync\u to\u async
似乎是一种有效的方法:

从asgiref.sync导入异步到同步,同步到异步
@异步到同步
异步定义转发函数(应用程序、架构编辑器):
等待api_调用_1()
对于范围()中的i:
等待api_调用_2()
等待同步到异步(model.save)()
需要访问数据库的同步函数应包装在
sync\u to\u async
中,然后等待

这可能有点乏味,因此一个好方法可能是像这样分离异步代码:

def forward_func(应用程序、架构编辑器):
@异步到同步
def从api()获取数据:
...
api_data=从_api()获取_数据
...
model.save()