草庐IT

gevent-socketio

全部标签

python - 如何使用带有 gevent 的 redis 或 Python 中的线程来为多个任务构建我的应用程序

我有一个通过redispubsub实时发送金融报价数据的过程。现在我希望我的Python应用程序处理输入数据(json),例如移动平均等计算。我想通过redis将结果发送回其他任务(根据第一个任务的结果进行进一步计算)。此外,我想每天或每秒定期触发一些任务。对于这个复杂且不可预见的结构问题,我偶然发现了像gevent、Celery或只是Threads这样的解决方案。但我想知道的是,我有哪些选择可以以正确的方式做到这一点?如何以最有效的方式执行Worker/Task来构建我的redispubsub?因此,欢迎提出建议,包括库(如果您使用过上述任何一个,请分享您的经验)、技术(Python

使用 eventlet 和 Redis 进行 Flask socketio 调试会产生额外的 greenthreads?

我正在尝试组装一个订阅Redis事件的简单Flask/socketio/eventlet服务器。我看到的行为是,在启用Flask调试的情况下,每次Werkzeug检测到更改并重新启动socketio时,我的另一个redis监听器也会启动(旧监听器不会退出)。这是一个删除了所有socketio处理程序的工作版本:importjsonfromflaskimportFlask,render_templatefromflask_socketioimportSocketIO,emitfromflask.ext.redisimportFlaskRedisimporteventleteventlet

python - 使用 Celery 与 Gevent 进行实时、同步的外部 API 查询

我正在开发一个Web应用程序,该应用程序将接收来自用户的请求,并且必须访问许多外部API才能为该请求编写答案。这可以直接从主Web线程使用gevent之类的东西来扇出请求来完成。或者,我在想,我可以将传入的请求放入一个队列中,然后使用worker来分配负载。这个想法是试图保持实时,同时将请求分配给几个工作人员。这些工作人员中的每一个都只会查询许多外部API中的一个。然后,他们收到的响应将经过一系列转换,保存到数据库中,转换为通用模式并保存到通用数据库中,最后组合成一个大响应,通过Web请求返回。Web请求很可能会一直阻塞,用户在等待,所以保持尽可能快地排队和出队很重要。外部API调用可

python - 确保使用 flask-socketio、redis 发送套接字消息

我有一个在多个pod上运行的flask-socketio服务器,使用redis作为消息队列。我想确保从外部进程发出的信号在100%的时间内到达目的地,或者知道它们何时失败。当进程A向连接到进程B的套接字发出事件时,该事件通过消息队列到达进程B,到达客户端。有什么办法可以拦截进程B上的传出发射?理想情况下,我会在几秒钟后使用工作人员检查消息是否到达客户端(通过客户端发出的确认事件),或者它会再次发出。此代码在进程A上运行:@app.route('/ex')defex_route():socketio.emit('external',{'text':f'sender:{socket.get

python - gevent + redis-py : SystemError: NULL result without error in PyObject_Call

我正在使用带有redish的redis-py和gevent,我有自己的类EventBot,它继承自Greenlet。在此类的__init__方法中,我正在使用初始化与redis的连接self._redis=Client(serializer=serialization.JSON(),**self.REDIS_CONFIG)有时当我尝试运行脚本时,它会抛出SystemError:NULLresultwithouterrorinPyObject_Call但有时它会正常启动。我还尝试将redis初始化移动到_run()方法,但没有帮助。这是我使用的简化类:fromgeventimportmo

go - 无法使命名空间在 go-socketio 中工作

我正在使用https://github.com/googollee/go-socket.io创建一个socket.io服务器。我正在尝试创建一个命名空间,但无法从客户端连接到该命名空间。服务器:funcregisterHandlers(server*socketio.Server){server.Of("room1").On("connection",connectionHandler)}funcconnectionHandler(sosocketio.Socket){log.Println("onconnection")so.Join("chat")so.On("chatmessag

mysql - 如何让 Django 使用不受支持的 MySQL 驱动程序,例如 gevent-mysql 或 Concurrence 的 MySQL 驱动程序?

我对在Concurrence或gevent等异步框架上运行Django很感兴趣。这两个框架都带有自己的异步MySQL驱动程序。问题是Django只官方支持MySQLdb。我需要做什么才能使Django与gevent或Concurrence附带的MySQL驱动程序一起工作?是否有我可以遵循的分步指南?这是一项重大事业吗?谢谢。 最佳答案 为@traviscline的建议与pymysql一起欢呼三声.他的建议是基于thispostfrommozilla.只需要一个simplepatchtoyourmanage.pyfile#!/usr/

node.js - SocketIo.use(function(socket, next)) - 下一步去哪里,如何捕获或接收它?

我找到了使用socket.IO1.*widthExpress4的示例。这里是link一切都很完美。但是有一个代码:io.use(function(socket,next){try{vardata=socket.handshake||socket.request;if(!data.headers.cookie){returnnext(newError('Missingcookieheaders'));}console.log('cookieheader(%s)',JSON.stringify(data.headers.cookie));varcookies=cookie.parse(da

node.js - Passport.SocketIo - 如何使用 NodeJS、Express 和 Passport 获取在线用户列表

我用MongoStore完成sessionStore每次登录都正确执行,session被写入数据库而没有错误。我正在使用这个包github.com/jfromaniello/passport.socketio将Passport与套接字io对齐,但我已经寻找了几个关于登录后如何处理sessionStorage的地方,因此它列出了哪些用户的姓名在线和离线,可以告诉我一个灯这个?app.jsvarexpress=require('express');varmongoose=require('mongoose');varpath=require('path');varbodyParser=re

javascript - 将 0.9.16 升级到 1.3.5 时,带有回调的 SocketIO 发出失败

在0.9.16中,我将socket.emit与回调一起使用,以便聊天服务器返回一些数据,并且我可以根据确认处理结果。但升级到1.3.5后,我发现控制台出现这样的错误UncaughtTypeError:Cannotreadproperty'apply'ofundefined.我做过类似的事情,来自网络socket.emit('userToUser',{'usename':'John','message':'hi'},function(callback){//callbackhandled});聊天服务器socket.on('userToUser',function(content,cal