我目前正在開發一個基於django-tenants-schema的Django應用程序。您不需要查看模塊的實際代碼,但其想法是它具有用於定義應用程序租戶使用哪個模式的當前數據庫連接的全局設置,例如,Django芹菜任務保持全局狀態
tenant = tenants_schema.get_tenant()
和設置
tenants_schema.set_tenant(xxx)
對於的任務的一些我希望他們記住的實例化過程中選擇當前全球租戶,例如理論上:
class AbstractTask(Task):
'''
Run this method before returning the task future
'''
def before_submit(self):
self.run_args['tenant'] = tenants_schema.get_tenant()
'''
This method is run before related .run() task method
'''
def before_run(self):
tenants_schema.set_tenant(self.run_args['tenant'])
在芹菜中是否有一種優雅的方式呢?
''before_submit()''必須在task.apply_async()','task()'或當前進程或其他任何啓動任務的其他情況下調用。正如我所看到的那樣:它只是一個過濾器,用於任務'* args,** kwargs',它添加了一個新參數,以便將它傳遞給任務運行器進程。 我需要的是在基本任務類中保存當前全局變量_implicitly_,然後在要運行任務的進程中將其恢復_implicitly_。 –