40 lines
1.1 KiB
Python
40 lines
1.1 KiB
Python
"""Dramatiq 任务队列配置(broker 选择 + Django 集成)。
|
||
|
||
- 生产 / 开发默认:RedisBroker(REDIS_URL,默认指向内网 192.168.5.7:6379)
|
||
- 测试环境:通过环境变量 TASK_BROKER=stub 切换 StubBroker(进程内、可断言)
|
||
- dramatiq-crontab 在 setup 模块导入后接管周期调度
|
||
"""
|
||
|
||
import os
|
||
|
||
|
||
def get_broker():
|
||
broker_kind = os.environ.get("TASK_BROKER", "redis")
|
||
|
||
if broker_kind == "stub":
|
||
import dramatiq
|
||
from dramatiq.brokers.stub import StubBroker
|
||
|
||
broker = StubBroker(middleware=[
|
||
dramatiq.middleware.AgeLimit(),
|
||
dramatiq.middleware.TimeLimit(),
|
||
dramatiq.middleware.Callbacks(),
|
||
dramatiq.middleware.Retries(),
|
||
])
|
||
dramatiq.set_broker(broker)
|
||
return broker
|
||
|
||
import dramatiq
|
||
from dramatiq.brokers.redis import RedisBroker
|
||
|
||
redis_url = os.environ.get(
|
||
"REDIS_URL",
|
||
"redis://192.168.5.7:6379/2",
|
||
)
|
||
broker = RedisBroker(url=redis_url)
|
||
dramatiq.set_broker(broker)
|
||
return broker
|
||
|
||
|
||
broker = get_broker()
|