在使用Django + Heroku进行异步处理时,从另一个进程访问Django数据库的方法是什么?

Heroku官方已经公开了异步处理的方法。

 

然而,当使用上述网站的worker进行处理时,在单独的线程中无法访问数据库。

当需要从另一个进程中执行耗时操作并将结果保存到数据库时,需要调用Django的设置(setup)。
以下程序中的”your_app”需要替换为您自己的应用名称。

import os
import redis
from rq import Worker, Queue, Connection

# 以下3行でdjangoのセットアップを行う
# your_appは自分のアプリ名を入力
import django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'your_app.settings')
django.setup()


listen = ['high', 'default', 'low']

redis_url = os.getenv('REDIS_URL', 'redis://localhost:6379')

conn = redis.from_url(redis_url)

if __name__ == '__main__':
    with Connection(conn):
        worker = Worker(map(Queue, listen))
        worker.work()

2023年8月23日 添加内容

使用以下的工具,似乎可以不需要进行上述的协调即可使用。

 

bannerAds