我一直在尝试使用龙卷风Redis的(这基本上是一个叉brükva略作修改与tornado.gen接口而不是adisp工作),以便通过使用提供事件的Redis'发布订阅.
所以我写了一个小脚本来测试这个例子的灵感.
import os
from tornado import ioloop, gen
import tornadoredis
print os.getpid()
def on_message(msg):
print msg
@gen.engine
def listen():
c = tornadoredis.Client()
c.connect()
yield gen.Task(c.subscribe, 'channel')
c.listen(on_message)
listen()
ioloop.IOLoop.instance().start()
Run Code Online (Sandbox Code Playgroud)
不幸的是,当我PUBLISH
通过redis-cli
内存使用率不断上升时.
为了描述内存使用情况,我首先尝试使用guppy-pe,但它不能在python 2.7下运行(是的,甚至尝试过后备箱),所以我又回到了pympler.
import os
from pympler import tracker
from tornado import ioloop, gen
import tornadoredis
print os.getpid()
class MessageHandler(object):
def __init__(self):
self.memory_tracker = tracker.SummaryTracker()
def on_message(self, msg):
self.memory_tracker.print_diff()
@gen.engine
def listen():
c = …
Run Code Online (Sandbox Code Playgroud) 我想过滤特定范围内的项目的查询集.这就是我的模型
class modelEmployee(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True)
location = models.PointField(srid=4326,max_length=40, blank=True,null=True)
objects = GeoManager()
Run Code Online (Sandbox Code Playgroud)
现在这就是我运行过滤器命令的方式.返回90英里特定范围内的物品.
qset = modelEmployee.objects.filter(location__distance_lte=(someLocation, D(mi=90)))
Run Code Online (Sandbox Code Playgroud)
结果返回一个物品,其距离实际为223.732英里,它不应该返回.
这些是两个项目的位置
location A - lat: 47.628641 and long: -117.402997
location B - lat: 47.618337 and long: -122.205341
Run Code Online (Sandbox Code Playgroud)
两者的距离实际为223.732英里.我必须过滤它错了.关于我可能出错的地方的任何建议?