小编Opt*_*mus的帖子

当信号处理程序遇到异常时,如何使Django信号处理程序不会无声地失败?

当处理程序中遇到异常时,如何使Django信号处理程序不会无声地失败

在使用开发服务器时是否存在记录所有这些错误的位置

为什么django信号处理程序无论如何都会无声地失败?是不是反对Python的Zen中的一行?

Python的禅宗明确表示......

错误不应该默默地传递.

它使它们成为调试的噩梦.你只能看到信号没有被解雇......

我发现了这个问题,但答案对我来说没用,因为它对问题非常具体(答案建议使用pyflakes,我已经使用pydev进行了令人满意的静态分析)

python django error-handling

18
推荐指数
2
解决办法
2203
查看次数

使用Django模型将JSON数据写入关系数据库的最优雅方法?

我在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)

python django json django-models relational-database

17
推荐指数
1
解决办法
2万
查看次数

在Pika或RabbitMQ中,如何检查是否有消费者正在消费?

我想检查消费者/工人是否在场消费我即将发送的消息.

如果没有任何工人,我会启动一些工作人员(消费者和发布者都在一台机器上),然后继续发布消息.

如果有类似的函数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)

python rabbitmq pika

10
推荐指数
1
解决办法
7977
查看次数

为什么python列表理解有时不受欢迎?

我见过的许多开发人员建议最好的做法是使用简单的循环,如果条件而不是一行列表理解语句.

我总是发现它们非常强大,因为我可以将大量代码放在一行中,并且它可以节省很多变量.为什么它仍然被认为是一种不好的做法?

(它慢吗?)

python list-comprehension

8
推荐指数
3
解决办法
2888
查看次数

将两个分支之间的差异合并到第三个分支

假设我有两个分支,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(分支出主)?

git diff

6
推荐指数
1
解决办法
3363
查看次数

在RSpec中为spec目录挂钩之前和之后

我们的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中的目录提供前后挂钩?

ruby rspec ruby-on-rails

6
推荐指数
1
解决办法
679
查看次数

将日期时间以不同的格式传递给Django中的models.DateTimeField?

我有一个看起来像这样的模型

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.DateTimeFieldinput_formats.有没有办法让DateTimeField接受上面的格式?

python django datetime django-models

4
推荐指数
1
解决办法
1万
查看次数

如果string有一个"\ r"即回车符,Python中的json.loads(jsonstring)就会失败

我得到一个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)

python parsing json

3
推荐指数
1
解决办法
8012
查看次数

计算可以分配某些变量的所有方式的最佳方法

我有一定数量的变量,每个变量都能达到某些值,我需要计算这些变量的所有可能方式.例如,如果我有 -

variable_values = [[0], [0, 1], [0, 1, 2], [1, 2]]
Run Code Online (Sandbox Code Playgroud)

即变量1可以是0; 变量2可以是; 01变量3可以是0,12; 变量4可以是12.

所以,所有可能的价值集都是 -

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)

python combinations list

0
推荐指数
1
解决办法
29
查看次数