当处理程序中遇到异常时,如何使Django信号处理程序不会无声地失败?
在使用开发服务器时是否存在记录所有这些错误的位置?
为什么django信号处理程序无论如何都会无声地失败?是不是反对Python的Zen中的一行?
Python的禅宗明确表示......
错误不应该默默地传递.
它使它们成为调试的噩梦.你只能看到信号没有被解雇......
我发现了这个问题,但答案对我来说没用,因为它对问题非常具体(答案建议使用pyflakes,我已经使用pydev进行了令人满意的静态分析)
我在Django中有一个典型的关系数据库模型,其中典型的模型包含扩展Django的一些ForeignKeys,一些ManyToManyFields和一些字段DateTimeField.
我想保存我从外部api以JSON格式(不是平面)接收的数据.我不是这样,数据被保存到各自的表(而不是整个json字符串到一个字段).这样做最干净,最简单的方法是什么?是否有可用于使此任务更简单的库?
这是一个澄清我的问题的例子,
楷模-
class NinjaData(models.Model):
id = models.IntegerField(primary_key=True, unique=True)
name = models.CharField(max_length=60)
birthdatetime = MyDateTimeField(null=True)
deathdatetime = MyDatetimeField(null=True)
skills = models.ManyToManyField(Skills, null=True)
weapons = models.ManyToManyField(Weapons, null=True)
master = models.ForeignKey(Master, null=True)
class Skills(models.Model):
id = models.IntegerField(primary_key=True, unique=True)
name = models.CharField(max_length=60)
difficulty = models.IntegerField(null=True)
class Weapons(models.Model):
id = models.IntegerField(primary_key=True, unique=True)
name = models.CharField(max_length=60)
weight = models.FloatField(null=True)
class Master(models.Model):
id = models.IntegerField(primary_key=True, unique=True)
name = models.CharField(max_length=60)
is_awesome = models.NullBooleanField()
Run Code Online (Sandbox Code Playgroud)
现在,我通常要将从外部api(秘密忍者api)获得的json字符串数据保存到此模型中,json看起来像这样
JSON-
{
"id":"1234",
"name":"Hitori",
"birthdatetime":"11/05/1999 20:30:00", …Run Code Online (Sandbox Code Playgroud) 我想检查消费者/工人是否在场消费我即将发送的消息.
如果没有任何工人,我会启动一些工作人员(消费者和发布者都在一台机器上),然后继续发布消息.
如果有类似的函数connection.check_if_has_consumers,我会像这样实现它 -
import pika
import workers
# code for publishing to worker queue
connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
channel = connection.channel()
# if there are no consumers running (would be nice to have such a function)
if not connection.check_if_has_consumers(queue="worker_queue", exchange=""):
# start the workers in other processes, using python's `multiprocessing`
workers.start_workers()
# now, publish with no fear of your queues getting filled up
channel.queue_declare(queue="worker_queue", auto_delete=False, durable=True)
channel.basic_publish(exchange="", routing_key="worker_queue", body="rockin",
properties=pika.BasicProperties(delivery_mode=2)) …Run Code Online (Sandbox Code Playgroud) 我见过的许多开发人员建议最好的做法是使用简单的循环,如果条件而不是一行列表理解语句.
我总是发现它们非常强大,因为我可以将大量代码放在一行中,并且它可以节省很多变量.为什么它仍然被认为是一种不好的做法?
(它慢吗?)
假设我有两个分支,master并且new_feature
我应该在一个特定的功能上工作,我认为这个功能将是其中的一部分new_feature,我检查了specific_feature分支机构的new_feature分支,就像这样
git checkout -b specific_feature
Run Code Online (Sandbox Code Playgroud)
现在我在这个specific_feature分支中做了很多开发,并将upstream/new_feature它合并了几次以获得远程更改.
现在,我才知道,我specific_feature应该已经一发不可收拾的master不是new_feature.(new_feature分支尚未准备好被推送)
有没有办法可以把我的specific_feature分支和new_feature分支之间的差异,并将这些更改应用到新的分支说specific_feature_master(分支出主)?
我们的RSpec测试套件中有相当多的测试.目录结构看起来像 -
spec/
truncation/
example1_spec.rb
example2_spec.rb
...
transaction/
example1_spec.rb
example2_spec.rb
...
Run Code Online (Sandbox Code Playgroud)
我希望在transaction/运行文件夹中的所有规范文件之前恢复测试数据库转储,并在所有测试完成后将其清空.
有没有办法做到这一点?
有before(:suite)和after(:suite)钩子,但这些适用于单个spec文件.
有没有办法为RSpec中的目录提供前后挂钩?
我有一个看起来像这样的模型
class Post(models.Model):
id = models.IntegerField(unique=True, primary_key=True)
title = models.CharField(max_length=150, blank=True)
created = models.DateTimeField(blank=True)
...
Run Code Online (Sandbox Code Playgroud)
我必须用大块数据填充数据库.我以平坦的json字符串形式获取数据(没有嵌套)所以我的工作很简单,即
mydict = json.loads(jsonstr)
mypost = Post(**mydict)
mypost.save()
Run Code Online (Sandbox Code Playgroud)
只有一个问题是日期时间以"YYYY-MM-DDThh:mm:ss + zzzz"格式表示(例如 "created" : "2011-11-17T09:21:31+0000"),它打破了上述代码.
我知道forms.DateTimeField了input_formats.有没有办法让DateTimeField接受上面的格式?
我得到一个JSON字符串,其中有一个"\r"字符,例如"{"data":"foo \r\n bar"}"当我尝试解析它时抛出ValueError.
>>> j="""{"data":"foo \r\n bar"}"""
>>> import json
>>> f=json.loads(j)
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
f=json.loads(j)
File "C:\Python27\lib\json\__init__.py", line 326, in loads
return _default_decoder.decode(s)
File "C:\Python27\lib\json\decoder.py", line 366, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:\Python27\lib\json\decoder.py", line 382, in raw_decode
obj, end = self.scan_once(s, idx)
ValueError: Invalid control character at: line 1 column 13 (char 13)
>>> j[13]
'\r'
Run Code Online (Sandbox Code Playgroud)
"\r" 是Python字符串中完全合法的字符.
我该如何解析这个JSON字符串呢
>>> dct …Run Code Online (Sandbox Code Playgroud) 我有一定数量的变量,每个变量都能达到某些值,我需要计算这些变量的所有可能方式.例如,如果我有 -
variable_values = [[0], [0, 1], [0, 1, 2], [1, 2]]
Run Code Online (Sandbox Code Playgroud)
即变量1可以是0; 变量2可以是; 0或 1变量3可以是0,1或2; 变量4可以是1或2.
所以,所有可能的价值集都是 -
possible_value_sets = [
[0, 0, 0, 1],
[0, 0, 1, 1],
[0, 0, 2, 1],
[0, 1, 0, 1],
[0, 1, 1, 1],
[0, 1, 2, 1],
[0, 0, 0, 2],
[0, 0, 1, 2],
[0, 0, 2, 2],
[0, 1, 0, 2],
[0, 1, 1, 2], …Run Code Online (Sandbox Code Playgroud)