在使用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日 添加内容
使用以下的工具,似乎可以不需要进行上述的协调即可使用。