Simple approach to launching background task in Django

后端 未结 3 402
栀梦
栀梦 2020-12-02 20:13

I have a Django website, and one page has a button (or link) that when clicked will launch a somewhat long running task. Obviously I want to launch this task as a background

相关标签:
3条回答
  • 2020-12-02 20:40

    Just use a thread.

    import threading
    
    t = threading.Thread(target=long_process,
                                args=args,
                                kwargs=kwargs)
    t.setDaemon(True)
    t.start()
    return HttpResponse()
    

    See this question for more details: Can Django do multi-thread works?

    0 讨论(0)
  • 2020-12-02 20:40

    Have a look at django-background-tasks - it does exactly what you need and doesn't need any additional services to be running like RabbitMQ or Redis. It manages a task queue in the database and has a Django management command which you can run once or as a cron job.

    0 讨论(0)
  • 2020-12-02 20:50

    If you're willing to install a 3rd party library, but you want something a whole lot simpler than Celery, check out Redis Queue. It does require Redis, which is pretty easy in itself, but that can provide a lot of other benefits as well.

    RQ itself has almost zero configuration. It's startlingly simple.

    References:

    • http://python-rq.org/
    • http://nvie.com/posts/introducing-rq/
    • https://devcenter.heroku.com/articles/python-rq (RQ on Heroku)
    0 讨论(0)
提交回复
热议问题