我在flask程序中使用了工廠函數和藍本,把Flask實例的創建放在了manage.py中(看過Flask Web開發這本書的同學應該懂我)?,F在我想要創建一個Celery的實例(在app程序包中),Celery的實例創建時需要Flask實例的程序上下文來讀取配置并在Task的調用函數里增加程序上下文,代碼如下(摘自Flask官方文檔):def make_celery(app): celery_app = Celery(__name__) celery_app.config_from_object(app.config) TaskBase = celery_app.Task class ContextTask(TaskBase): abstract = True def __call__(self, *args, **kwargs): with app.app_context(): return TaskBase.__call__(self, *args, **kwargs) celery_app.Task = ContextTask return celery_app現在的問題是:Flask實例在manage.py中創建,不在app程序包中,沒法在app包中導入Flask實例(強行導入就沒有了大型程序結構的意義了);定義Celery Task的時候,也需要Celery的實例對象,所以也不能在manage.py中創建Celery實例;現在這兩個實例相互制約,好頭疼,請問各位大神都是怎么做的?網上看到一個方法,在app程序包創建celery實例的時候,直接調用Flask實例創建函數來創建了一個flask實例,但是這樣的話,Flask運行時的程序實例還是創建Celery時的程序實例嗎?程序上下文會不會不一致?先謝為敬!
- 2 回答
- 0 關注
- 1113 瀏覽
添加回答
舉報
0/150
提交
取消