到目前为止,我按照这个建议重新加载代码:
https://code.google.com/archive/p/modwsgi/wikis/ReloadingSourceCode.wiki
这具有缺点,即每N秒仅检测到代码变化.我可以使用N = 0.1,但这会导致无用的磁盘IO.
AFAIK可以通过python获得linux内核的inotify回调.
是否有更快的方法来检测代码更改并重新启动wsgi处理程序?
我们在linux上使用守护进程模式.
有兴趣为什么我想要这个.这是我的设置:
大多数人使用" manage.py runserver"进行开发,并使用其他一些wsgi部署进行生产.
在我的背景下,我们自动创建了新系统,产品和开发系统大多相同.
一个操作系统(linux)可以托管N个系统(虚拟环境).
开发人员可以使用runserver或mod_wsgi.使用runserver有一个好处,它易于调试,mod_wsgi具有不需要首先启动服务器的好处.
mod_wsgi有一个好处,你知道URL: https://dev-server/system-name/myurl/
使用runserver,您不知道端口.使用案例:您想要从内部维基链接到开发系统....
我们过去使用过mod_wsgi的代码重新加载的脏黑客攻击:maximum-requests=1但这很慢.
在Django中,从版本1.11开始,我们有一个PostgreSQL类GinIndex(https://docs.djangoproject.com/en/1.11/ref/contrib/postgres/indexes/).我想创建一个迁移,在VectorSearchField我添加到我的一个表中构建这样的索引.到目前为止,我试图简单地添加db_index=True到VectorSearchField,但失败了,因为它试图创建一个B树索引(我认为),并且VectorSearchField值太长.
我设法通过运行migrations.RunSQL()迁移来创建我想要的索引:
CREATE INDEX entryline_sv_index ON entryline USING GIN (sv);
Run Code Online (Sandbox Code Playgroud)
但是,我想,因为GinIndexDjango中有一个特殊的类,也许有一种方法可以在不执行原始SQL的情况下创建这样的索引?
这是一个模型类:
import django.contrib.postgres.search as pg_search
class EntryLine(models.Model):
speaker = models.CharField(max_length=512, db_index=True)
text = models.TextField()
sv = pg_search.SearchVectorField(null=True) # I want a GIN index on this field.
Run Code Online (Sandbox Code Playgroud)
知道如何sv在迁移中正确创建字段索引吗?或者CREATE INDEX ...以最佳方式执行查询?
导入sql文件时出现以下错误
ERROR: ASCII '\0' appeared in the statement, but this is not allowed unless option --binary-mode is enabled and mysql is run in non-interactive mode.
Set --binary-mode to 1 if ASCII '\0' is expected. Query: ''.
Run Code Online (Sandbox Code Playgroud)
需要帮助...!!
当用户登录时,一些细节会保存到会话中,让我们说使用key ='user_settings'
当系统内发生某些更新时,我需要遍历所有用户并从每个用户会话中删除"user_settings"键.这样我就会触发从数据库中加载新鲜的细节.
如何遍历所有会话并从每个会话中删除密钥?
我有这个代码:
q = MyModel.objects.order_by('-value1').annotate(
res=ExpressionWrapper(
(F('value1') / F('value2')),
output_field=FloatField()),
)
for i in q:
print(i.value1, i.value2, i.res)
Run Code Online (Sandbox Code Playgroud)
所以,输出将是:
5 10 0.0
1 2 0.0
Run Code Online (Sandbox Code Playgroud)
但是我需要
5 10 0.5
1 2 0.5
Run Code Online (Sandbox Code Playgroud)
Wy F()将结果四舍五入?怎么不这样做?
谢谢!
对问题的简短介绍......
UNNEST和ANY.djorm_pgarray它),但函数不是本机支持的..extra(),但Django 1.8引入了一个新的数据库功能概念.让我提供一个最原始的例子,说明我基本上对所有这些做了些什么.A Dealer有一个它支持的品牌列表.A Vehicle有一个品牌并且与经销商相关联.但事实上它Vehicle的制作与Dealer制作清单不匹配,这是不可避免的.
MAKE_CHOICES = [('honda', 'Honda'), ...]
class Dealer(models.Model):
make_list = TextArrayField(choices=MAKE_CHOICES)
class Vehicle(models.Model):
dealer = models.ForeignKey(Dealer, null=True, blank=True)
make = models.CharField(max_length=255, choices=MAKE_CHOICES, blank=True)
Run Code Online (Sandbox Code Playgroud)
拥有经销商和制造商的数据库,我想要计算车辆制造商及其经销商制造商列表所匹配的所有车辆.这就是我避免的方式.extra().
from django.db.models import functions
class SelectUnnest(functions.Func):
function = 'SELECT UNNEST'
...
Vehicle.objects.filter(
make__in=SelectUnnest('dealer__make_list')
).count()
Run Code Online (Sandbox Code Playgroud)
结果SQL:
SELECT COUNT(*) AS "__count" FROM "myapp_vehicle"
INNER JOIN "myapp_dealer"
ON ( "myapp_vehicle"."dealer_id" = "myapp_dealer"."id" )
WHERE …Run Code Online (Sandbox Code Playgroud) 我有两个Django模型,如下所示,MyModel1&MyModel2:
class MyModel1(CachingMixin, MPTTModel):
name = models.CharField(null=False, blank=False, max_length=255)
objects = CachingManager()
def __str__(self):
return "; ".join(["ID: %s" % self.pk, "name: %s" % self.name, ] )
class MyModel2(CachingMixin, models.Model):
name = models.CharField(null=False, blank=False, max_length=255)
model1 = models.ManyToManyField(MyModel1, related_name="MyModel2_MyModel1")
objects = CachingManager()
def __str__(self):
return "; ".join(["ID: %s" % self.pk, "name: %s" % self.name, ] )
Run Code Online (Sandbox Code Playgroud)
MyModel2有一个ManyToMany字段来MyModel1授权model1
现在看看当我向这个ManyToMany字段添加一个新条目时会发生什么.据Django说,它没有效果:
>>> m1 = MyModel1.objects.all()[0]
>>> m2 = MyModel2.objects.all()[0]
>>> m2.model1.all()
[]
>>> m2.model1.add(m1)
>>> m2.model1.all() …Run Code Online (Sandbox Code Playgroud) 我对models.py中的一个表进行了一些更改,并尝试使用'python manage.py migrate'进行迁移,这需要花费数小时.我只更改了三个字段(列)名称的名称,现在已经运行了2个多小时.今天早些时候创建这张桌子时,它在几分钟内就顺利运行了(我想).季节开始是改变的模型.
以下是来自models.py的内容:
from django.db import models
from django.contrib.gis.db import models as gismodels
# from django.contrib.gis import admin
# Create your models here.
class Location(models.Model): # table name automatically chirps_location
locationID = models.IntegerField(default=0, primary_key=True)
lat = models.FloatField(default=0.0)
lon = models.FloatField(default=0.0)
geom = gismodels.PointField(null=True)
objects = gismodels.GeoManager()
def __unicode__(self):
return u"LocationID: " + unicode(self.locationID)
# admin.site.unregister(Location)
# admin.site.register(Location, admin.OSMGeoAdmin)
class Rainfall(models.Model):
location = models.ForeignKey(Location)
year = models.IntegerField(default=0)
pentad_num = models.IntegerField(default=0)
pentad_val = models.FloatField(default=0.0)
class Meta:
ordering = ['location', 'year', 'pentad_num'] …Run Code Online (Sandbox Code Playgroud) 我有一个Django Web应用程序,它使用默认的自动递增正整数作为主键.此密钥在整个应用程序中使用,并经常插入到URL中.我不想向公众公开这个号码,以便他们可以猜测我的数据库中的用户或其他实体的数量.
这是一个经常要求,我已经向类似的矿山看到了问题和答案.大多数解决方案建议散列原始主键值.但是,这些答案都不符合我的需要.这些是我的要求:
实现这一目标的最佳方法是什么?以下工作会怎样?
def hash_function(int):
return fancy-hash-function # What function should I use??
def obfuscate_pk(sender, instance, created, **kwargs):
if created:
logger.info("MyClass #%s, created with created=%s: %s" % (instance.pk, created, instance))
instance.pk = hash_function(instance.pk)
instance.save()
logger.info("\tNew Pk=%s" % instance.pk)
class MyClass(models.Model):
blahblah = models.CharField(max_length=50, null=False, blank=False,)
post_save.connect(obfuscate_pk, sender=MyClass)
Run Code Online (Sandbox Code Playgroud) 我正在尝试从MySQL中的JSONFIELD"数据"中提取日期时间.
但是,如果我执行简单的JSON_EXTRACT,则返回字段类型是JSON.
mysql> select JSON_EXTRACT(data, "$.new_time") from analytics limit 10;
+----------------------------------+
| JSON_EXTRACT(data, "$.new_time") |
+----------------------------------+
| NULL |
| "2016-09-30T04:00:00+00:00" |
| "2016-09-29T05:30:00+00:00" |
| NULL |
| "2016-10-01T05:30:00+00:00" |
| "2016-09-27T23:00:00+00:00" |
| NULL |
| "2016-09-23T01:30:00+00:00" |
| "2016-09-23T04:00:00+00:00" |
| "2016-09-27T01:30:00+00:00" |
+----------------------------------+
Run Code Online (Sandbox Code Playgroud)
我想将其转换为MySQL DATETIME.但如果我链接JSON_EXTRACT和STR_TO_DATETIME,我会得到所有NULL值:
mysql> select STR_TO_DATE(JSON_EXTRACT(data, "$.new_time") ,"%Y-%m-%d") from analytics_calendaranalytics limit 10;
+-----------------------------------------------------------+
| STR_TO_DATE(JSON_EXTRACT(data, "$.new_time") ,"%Y-%m-%d") |
+-----------------------------------------------------------+
| NULL |
| NULL |
| NULL |
| NULL |
| NULL | …Run Code Online (Sandbox Code Playgroud) django ×8
python ×6
mysql ×3
postgresql ×2
database ×1
django-cache ×1
django-orm ×1
hash ×1
indexing ×1
inotify ×1
json ×1
migration ×1
mod-wsgi ×1
mysql-json ×1
mysqldump ×1
mysqlimport ×1
phpmyadmin ×1
primary-key ×1
sql ×1