2015-03-26 2 views
0

Ниже мой питон коднастройка GEvent-сокет с использованием опоки, Nginx и gunicorn

from gevent import monkey;monkey.patch_all() 
from flask import Flask,render_template, url_for, request, redirect, flash,jsonify,session,Markup 
from socketio import socketio_manage 
from socketio.namespace import BaseNamespace 
from socketio.server import SocketIOServer 

app=Flask(__name__) 
app.config['SECRET_KEY'] = 'secret!' 

class ChatNamespace(BaseNamespace): 
    def recv_connect(self): 
    print "successfully connected" 
    self.emit('show_result','successfully connect') 
    def on_receive_message(self,msg): 
    print "message is "+msg["data"] 
    self.emit('show_result2',msg["data"]) 
@app.route('/') 
def index(): 
    #print "in the function" 
    return render_template('index.html') 

@app.route("/socket.io/<path:path>") 
def run_socketio(path): 
    socketio_manage(request.environ, {'/test': ChatNamespace}) 
    return 'ok' 

if __name__=='__main__': 
    #app.run(debug=True, port=80, host='0.0.0.0') 
    app.debug=True 
    #app.run() 
    SocketIOServer(('0.0.0.0', 5000), app,resource="socket.io").serve_forever() 
print "successfull listen to socket" 

и следующее Nginx конфигурации сервер {

location/{ 
    proxy_set_header X-Forward-For $proxy_add_x_forwarded_for; 
    proxy_set_header Host $http_host; 
    proxy_redirect off; 
    try_files $uri @proxy; 
} 
location @proxy { 
    proxy_pass http://127.0.0.1:8000; 
} 
location /templates { 
    alias /home/www/flask_project/templates/; 
} 
location /script { 
    alias /home/www/flask_project/script/; 
    } 
    location /static { 
    alias /home/www/flask_project/static/; 
    } 

} 

Каждый раз, когда я запустить приложение, Я использую следующую команду
gunicorn main2: приложение -b локальный: 5000

Я знаю, что мне не хватает информации для запуска этого приложения gevent-socketio на реальном сервере. Может кто-нибудь помочь мне, я совершенно новой для этой веб-сокетов технологии

ответ

0

вы пробовали FlaskSocketio ??

Если вы пытаетесь сделать это без расширения, вам понадобится работник-gunicorn для запуска вашего приложения.

gunicorn --worker-class socketio.sgunicorn.GeventSocketIOWorker module:app 
Смежные вопросы