2016-08-31 77 views
0

我正在開發一個使用芹菜的小型獨立python應用程序。我已經使用django框架構建了該應用程序,但我的應用程序僅限於後端。這意味着用戶不需要訪問我的站點,我的應用程序僅用於接收來自芹菜的任務隊列和對數據庫執行操作。爲了在數據庫上執行操作,我需要使用Django模塊。是否有可能只在我的項目中使用Django模型模塊?

我所試圖做的是消除我的Django應用程序的其它部分,並且只使用芹菜和Django模型模塊(包括運行這些需要的依賴)。

總之,我簡單的芹菜應用程序將從我的Redis代理運行接收指令,並使用Django模型在數據庫中執行操作。

可以做到這一點嗎?如果是這樣,怎麼樣?

這裏是我的項目結構:

myproject/ 
--manage.py 
--myproject/ 
----celery.py 
----models.py 
----settings.py 
----tasks.py 
----urls.py 
----wsgi.py 

這裏是我的settings.py:

回答

0

你只需要

env['DJANGO_SETTING_MODULE'] = 'myproject.settings' 
django.setup() 

(假設你設置你的數據庫,並在設置INSTALLED_APPS東西。 py)

+0

你能多解釋一下嗎,我不明白。我需要在哪裏使用這個? – Elisha512

0

在您的項目的settings.py中,只需在開頭添加。

import django 
import os 

sys.path.insert(0, your_project_path) # Ensure python can find your project 
os.environ['DJANGO_SETTINGS_MODULE'] = 'myproject.settings' 
django.setup() 

然後你可以使用Django的ORM,記得刪除你不Django的設置需要中間件。

0

你有一個python腳本,需要一些芹菜任務,你也需要Django ORM來進行數據庫交互。

  1. 您可以設置的Django項目

  2. 你的目的創建一個應用程序,包括在settings.py和應用內的在models.py創建所需的模型。 ref:What minimal files i need to use django ORM

  3. 設置執行芹菜的環境。即,redis服務器。將djcelery與django項目集成在一起。爲芹菜任務目的。 您可以使用芹菜節拍進行定期任務。或延遲。 ref:http://docs.celeryproject.org/en/latest/django/first-steps-with-django.html

  4. 您可以在celery任務中導入和使用像正常一樣的django模型。

  5. 和芹菜的任務,你可以使用

    我運行。芹菜-A任務工--loglevel = info

    ii。芹菜 - 任務擊敗-l信息。如果您想要爲定期執行而編寫的任務使用節拍。

  6. 如果任務只需要立即異步執行或時間間隔後,您可以使用TASK_NAME。delay() 使用delay()調用python腳本中的任務() 我認爲在腳本中使用djcelery可能需要在腳本中設置django env。 只是做django.setup()。

我想這會幫助你解決你的問題。

相關問題