我有一些服務器啓動代碼位於我的某個Django應用程序的「models.py」中。我需要在服務器啓動時運行該代碼。如何*不*在syncdb上運行Django代碼
的問題是,該代碼發出一個SQL查詢,它使我從psycopg2
(它打破了交易,並表不創建。)
將代碼在中間件和提高django.core.exceptions.MiddlewareNotUsed
是運行syncdb
不是最佳的,因爲我想在Django shell中也有效果(並且將初始化代碼放在中間件中聽起來並不正確)。另外,我需要等待第一個請求來執行此操作。我想在服務器啓動時運行代碼,而不是在第一位客戶敲我的網站時運行代碼。
服務器啓動信號仍然沒有在Django中實現,所以這不是一個選項。
因此,我想以某種方式之一:
- 檢查,如果Django是運行的執行syncdb,所以我不這樣做的查詢,
- ,或者檢查相應的表是那麼,如果他們不是,那麼,也不要做任何查詢
非上述兩個選項我在任何文件中找到。我怎麼做?還是有更好的(即理智的)做我想做的事情的方式?
聽起來更加古怪,但它可能會解決實際問題。 – 2010-08-30 12:16:15
嗯,我也覺得這很奇怪,但使用'urls.py'有時似乎是一個有用的解決方法,類似的問題! – 2010-08-30 13:49:28
好吧,因爲沒有人能夠提出更好的想法,所以我接受您的解決方案作爲解決方法。謝謝您的幫助。 – 2010-10-10 17:49:09