DEV Community

Valentino Gagliardi
Valentino Gagliardi

Posted on • Originally published at youtu.be

6

[Video] Asynchronous tasks in Django with Django Q (Part 3)

Django Q is a scheduler and a task queue for Django. In this series you'll learn how to use Django Q in your Django applications for queuing long-running tasks.

In this episode:

  • hands on Django Q
  • using async_task

Enjoy!

Top comments (1)

Collapse
 
jramiresbrito profile image
João Victor Ramires Guimarães Brito • Edited

Hey, first of all thanks for sharing!

I'm trying to populate my database using a Data Migration.

In my populate function I have 2 api calls, so the shape is something like this:

async def populate_table(apps, schema_editor):
    some stuff...
    an api call like: await get_info()...
    an api call inside a for loop (any problem with this?)
    for i in range():
       an api call like: await get_another_info()...
    more stuff...
    model.save()

And then, I have my migration class:

class Migration(migrations.Migration):

    dependencies = [
        ('app', 'the previous migration'),
    ]

    operations = [
        migrations.RunPython(populate_table)
    ]

Running the migration a Runtime Warning is raised:

RuntimeWarning: coroutine 'populate_table' was never awaited

So I try to decorate my Migration with Async Await without success.

How should I do that? And again, any problem to have async tasks inside a sync for loop?

AWS Security LIVE!

Join us for AWS Security LIVE!

Discover the future of cloud security. Tune in live for trends, tips, and solutions from AWS and AWS Partners.

Learn More

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay