2014-09-02 80 views
2

我試圖用VIRTUALENV,馬戲團和Chaussette運行Django的,與CentOS的7虛擬主機,但我不斷收到此錯誤,當我運行circusd circus.ini部署Django的與VIRTUALENV,馬戲團和Chaussette

(djenv)[[email protected] django]# circusd circus.ini 
2014-09-01 22:06:38 circus[2406] [INFO] Starting master on pid 2406 
2014-09-01 22:06:38 circus[2406] [INFO] sockets started 
2014-09-01 22:06:38 circus[2406] [WARNING] error in 'settings': [Errno 2] No such file or directory: '~/.virtualenv/djenv/bin/chaussette' 
2014-09-01 22:06:38 circus[2406] [WARNING] error in 'settings': [Errno 2] No such file or directory: '~/.virtualenv/djenv/bin/chaussette' 
2014-09-01 22:06:38 circus[2406] [WARNING] error in 'settings': [Errno 2] No such file or directory: '~/.virtualenv/djenv/bin/chaussette' 
2014-09-01 22:06:38 circus[2406] [WARNING] error in 'settings': [Errno 2] No such file or directory: '~/.virtualenv/djenv/bin/chaussette' 
2014-09-01 22:06:38 circus[2406] [WARNING] error in 'settings': [Errno 2] No such file or directory: '~/.virtualenv/djenv/bin/chaussette' 
2014-09-01 22:06:38 circus[2406] [INFO] settings stopped 
2014-09-01 22:06:38 circus[2406] [INFO] Arbiter now waiting for commands 
2014-09-01 22:06:38 circus[2406] [INFO] circusd-stats started 
2014-09-01 22:06:38 circus[2415] [INFO] Starting the stats streamer 

# Here i close circusd with ctrl+c 

2014-09-01 22:19:40 circus[2406] [INFO] Got signal SIG_INT 
2014-09-01 22:19:40 circus[2406] [INFO] Arbiter exiting 
2014-09-01 22:19:41 circus[2406] [INFO] circusd-stats stopped 
Exception ignored in: <module 'threading' from '/usr/local/lib/python3.4/threading.py'> 
Traceback (most recent call last): 
    File "/usr/local/lib/python3.4/threading.py", line 1294, in _shutdown 
    t.join() 
    File "/usr/local/lib/python3.4/threading.py", line 1057, in join 
    raise RuntimeError("cannot join current thread") 
RuntimeError: cannot join current thread 

我的django項目的路徑是/opt/webapps/django/。這是這條道路的結構:

(FYI:設置是我給我的Django項目名稱)

/django/ 
/django/manage.py 
/django/circus.ini 
/django/settings/ 
/django/settings/urls.py 
/django/settings/wsgi.py 
/django/settings/settings.py 

我的virtualenv的路徑是:〜/ .virtualenv/djenv/。這是這條道路的結構(BIN):

/djenv/ 
/djenv/bin/ 
/djenv/bin/circusd 
/djenv/bin/chaussette 
/djenv/bin/circushttpd 
/djenv/bin/python3.4 
/djenv/bin/pip 

circus.ini內容是:

[circus] 
endpoint = tcp://127.0.0.1:5555 
pubsub_endpoint = tcp://127.0.0.1:5556 
stats_endpoint = tcp://127.0.0.1:5557 

[watcher:settings] 
cmd = ~/.virtualenv/djenv/bin/chaussette django:/opt/webapps/django --fd $(circus.sockets.settings)$ --django-settings settings.settings 
use_sockets = True 
numprocesses = 3 

[socket:settings] 
host = 0.0.0.0 
port = 8080 
+1

而不是'〜',使用您的環境的完整路徑。 – 2014-09-02 03:53:41

+0

已經嘗試過,但我不斷收到相同的錯誤。 – iDevFS 2014-09-02 06:51:25

+0

畢竟我真的需要改變〜完整路徑(/根/)。謝謝 – iDevFS 2014-09-02 09:55:39

回答

2

所以,我終於找到一個解決方案。這是我做的。

首先,我改變了我的circus.ini這樣:

[circus] 
endpoint = tcp://127.0.0.1:5555 
pubsub_endpoint = tcp://127.0.0.1:5556 
stats_endpoint = tcp://127.0.0.1:5557 

[watcher:settings] 
cmd = /root/.virtualenvs/djenv/bin/chaussette settings.wsgi.application 
args = --fd $(circus.sockets.settings) 
use_sockets = True 
numprocesses = 3 
copy_env = True 
virtualenv = /root/.virtualenvs/djenv/ 

[socket:settings] 
host = 0.0.0.0 
port = 8080 

因爲我跑這個馬戲團在Python 3.4.1我是越來越另一個錯誤:

OSError: [Errno 9] Bad file descriptor 

尋找一個解決方案對這個問題,我發現這個修復https://github.com/mozilla-services/circus/pull/800/files

希望這可以幫助別人。

+0

如果你用Python 3.5.1運行這段代碼,期望得到這個錯誤 TypeError:get()得到一個意外的關鍵字參數'raw'。 該解決方案已被髮表在這裏:https://github.com/circus-tent/circus/commit/d0d2ac4fd843bb9f050a8c678956fe3682371001 只需添加** kwargs在/path/to/virtualenv/lib/python3.5/site建議-packages/circus/config.py – iDevFS 2015-12-28 11:12:33

+1

對於試圖在生產環境中使用馬戲團的人,你可以看看這篇文章(http://aameer.github.io/circus-as-an-alternative-to-supervisor/ )可能有幫助。謝謝 – Aameer 2016-04-07 06:09:35

2

這個回覆是遲了,但可能會對其他有用。現在,隨着python3.4和django1.9

在這裏工作是我的/etc/circus/circusd.ini

[circus] 
check_delay = 5 
include_dir = /etc/circus/conf.d 
logoutput = /var/log/circus/system.log 
statsd = True 

[plugin:flapping] 
use = circus.plugins.flapping.Flapping 

而且我的項目/etc/circus/conf.d/project.ini

[project_name] 
cmd = chaussette project_name.wsgi.application --backend waitress --fd $(circus.sockets.project_name) 
use_sockets = True 
virtualenv = /path/to/env # if you are using virtualenv 
working_dir = /path/to/project 
copy_env = True 

stdout_stream.class = FileStream 
stdout_stream.filename = /path/to/logs/stdout.log 
stdout_stream.refresh_time = 0.3 

stderr_stream.class = FileStream 
stderr_stream.filename = /path/to/logs/error.log 
stderr_stream.refresh_time = 0.3 

[project_name] 
PYTHONPATH = /path/to/project 

[socket:project_name] 
host = localhost 
port = 8000 

處理/ path/to/logs /和/var/log/circus/system.log的權限。目錄應該存在。