爱意满满的作品展示区。
ericls

去年写的一个小 library —— Django 3 不需要额外 worker 的后台任务处理

  •  2
     
  •   ericls ·
    ericls · May 21, 2020 · 2510 views
    This topic created in 2185 days ago, the information mentioned may be changed or developed.

    简单用例:

    from django_simple_task import defer
    
    def task1():
        time.sleep(1)
        print("task1 done")
    
    async def task2():
        await asyncio.sleep(1)
        print("task2 done")
    
    def view(requests):
        defer(task1)
        defer(task2)
        return HttpResponse(b"My View")
    

    这里 task1 和 task2 都会在 view 返回后执行。

    这个东西不能替代 celery,只适合一些简短且不 critical 的任务。虽有有一些机制控制并发数量和结束应用前等待队列清空。

    这个原理很简单,但是如果每个项目都自己写一个又很麻烦 所以就整理了一下。 有兴趣的请点下面的链接:

    View on PyPI

    View on GitHub

    Read the docs

    4 replies    2020-05-22 10:17:18 +08:00
    qW7bo2FbzbC0
        1
    qW7bo2FbzbC0  
       May 21, 2020
    django-q 除了强制时区的问题以外,挺好用的
    ericls
        2
    ericls  
    OP
       May 22, 2020
    @hjahgdthab750 是的 django-q 用过两次 觉得可以代替 celery 。 但是 Celery 毕竟还是最熟悉
    qW7bo2FbzbC0
        3
    qW7bo2FbzbC0  
       May 22, 2020
    @ericls celery 实在是太重了
    ericls
        4
    ericls  
    OP
       May 22, 2020 via iPhone
    @hjahgdthab750 项目更重的时候 celery 就显得很轻了 哈哈
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4282 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 05:20 · PVG 13:20 · LAX 22:20 · JFK 01:20
    ♥ Do have faith in what you're doing.