flask socket和kafka 解决跨域问题

pip install Flask-CKEditor
pip install kafka-python
pip3 install -i https://pypi.doubanio.com/simple paho-mqtt
pip install flask-socketio
pip install flask_cors
pip install paho.mqtt
import logging

from flask import Flask, request
from flask_appbuilder import AppBuilder, SQLA
from flask_cors import CORS
from flask_redis import FlaskRedis
from flask_ckeditor import CKEditor
from flask_socketio import SocketIO, emit

"""
 Logging configuration
"""

logging.basicConfig(format="%(asctime)s:%(levelname)s:%(name)s:%(message)s")
logging.getLogger().setLevel(logging.DEBUG)

app = Flask(__name__)
app.config.from_object("config")
# CORS(app, supports_credentials=True)
CORS(app, resources={r"/*": {"origins": "*"}})
db = SQLA(app)
async_mode = 'threading'
socketioApp =SocketIO(app, async_mode=async_mode, cors_allowed_origins='*')

# send CORS headers 2022-4-18 10:48:41
@app.after_request
def after_request(response):
    print('request.url====', request.url)
    response.headers.add('Access-Control-Allow-Origin', '*')
    if request.method == 'OPTIONS':
        response.headers['Access-Control-Allow-Methods'] = '*'
        headers = request.headers.get('Access-Control-Request-Headers')
        if headers:
            response.headers['Access-Control-Allow-Headers'] = headers
            ##response.headers['Authorization'] = 'xiaominggessdfs3432ds34ds32432cedsad332e23'
    return response

redis_store = FlaskRedis()
redis_store.init_app(app)

ckeditor = CKEditor()
ckeditor.init_app(app)
base_template = "app/base.html"
appbuilder = AppBuilder(app, db.session, base_template=base_template)


"""
from sqlalchemy.engine import Engine
from sqlalchemy import event

#Only include this for SQLLite constraints
@event.listens_for(Engine, "connect")
def set_sqlite_pragma(dbapi_connection, connection_record):
    # Will force sqllite contraint foreign keys
    cursor = dbapi_connection.cursor()
    cursor.execute("PRAGMA foreign_keys=ON")
    cursor.close()
"""

from . import views
from app.view import myEvent, mydemo
from app.view import LayerManageView, MonitoringManageView, ManagerApkView, RDMessageView

run.py

from app import app, socketioApp

# app.run(host="0.0.0.0", port=5030, debug=True)
socketioApp.run(app, host="0.0.0.0", port=5030)

myEvent.py

import datetime
import json
import uuid

import socketio
from flask_socketio import emit

from app import socketioApp, appbuilder
from app.common.function import sendShortMessageFun
from app.models import RDMessage


@socketioApp.on("message")
def handle_event(message):
    print("服务器已经接收到消息:", message)
    message['msg'] = '服务器已经接收到消息'
    emit("response", message)

mydemo.py

from flask import request, current_app, send_from_directory, render_template
from flask_appbuilder import BaseView, expose

from app import appbuilder


class MyDemoView(BaseView):
    route_base = "/mydemo"

    @expose( '/index', methods = ['GET'] )
    def index(self):
        return render_template('myTemp/myDemo/index.html')

appbuilder.add_view_no_menu(MyDemoView())
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值