我的控制台输出在运行输出窗口中超出了PyCharm的缓冲区大小.因此,当我在测试完成后滚动到顶部时,我无法一直到控制台输出的开头.我可以在外部终端窗口中运行测试并查看所有输出,但与PyCharm的集成非常方便.
有没有办法增加PyCharm运行输出的缓冲区大小,以便我可以保留所有日志记录输出并向右滚动到顶部?
我factory.LazyAttribute在SubFactory调用中使用传入一个对象,在对象中创建factory_parent.这很好用.
但是,如果我将创建的对象传递给a RelatedFactory,LazyAttribute则无法再看到factory_parent并失败.
这很好用:
class OKFactory(factory.DjangoModelFactory):
class = Meta:
model = Foo
exclude = ['sub_object']
sub_object = factory.SubFactory(SubObjectFactory)
object = factory.SubFactory(ObjectFactory,
sub_object=factory.LazyAttribute(lambda obj: obj.factory_parent.sub_object))
Run Code Online (Sandbox Code Playgroud)
同样的呼叫在LazyAttribute这里失败:
class ProblemFactory(OKFactory):
class = Meta:
model = Foo
exclude = ['sub_object', 'object']
sub_object = factory.SubFactory(SubObjectFactory)
object = factory.SubFactory(ObjectFactory,
sub_object=factory.LazyAttribute(lambda obj: obj.factory_parent.sub_object))
another_object = factory.RelatedFactory(AnotherObjectFactory, 'foo', object=object)
Run Code Online (Sandbox Code Playgroud)
相同的LazyAttribute调用不能再看到factory_parent,并且只能访问AnotherObject值.LazyAttribute抛出错误:
AttributeError: The parameter sub_object is unknown. Evaluated attributes are...[then lists all …Run Code Online (Sandbox Code Playgroud) 我的Celery任务引发了一个自定义异常NonTransientProcessingError,然后被捕获AsyncResult.get().Tasks.py:
class NonTransientProcessingError(Exception):
pass
@shared_task()
def throw_exception():
raise NonTransientProcessingError('Error raised by POC model for test purposes')
Run Code Online (Sandbox Code Playgroud)
在Python控制台中:
from my_app.tasks import *
r = throw_exception.apply_async()
try:
r.get()
except NonTransientProcessingError as e:
print('caught NonTrans in type specific except clause')
Run Code Online (Sandbox Code Playgroud)
但我的自定义异常是,虽然引发的异常是,所以我的子句失败了.my_app.tasks.NonTransientProcessingErrorAsyncResult.get()celery.backends.base.NonTransientProcessingErrorexcept
Traceback (most recent call last):
File "<input>", line 4, in <module>
File "/...venv/lib/python3.5/site-packages/celery/result.py", line 175, in get
raise meta['result']
celery.backends.base.NonTransientProcessingError: Error raised by POC model for test purposes
Run Code Online (Sandbox Code Playgroud)
如果我在任务中捕获异常,它可以正常工作.只有当异常被提升到.get()调用时才重命名.
如何引发自定义异常并正确捕获? …
我正在针对多线程应用程序运行Django单元测试.在单元测试完成时,线程通常没有终止,因此无法删除测试数据库.当我下次运行测试时,我收到消息:
Type 'yes' if you would like to try deleting the test database 'test_appname', or 'no' to cancel`
Run Code Online (Sandbox Code Playgroud)
该选项是我想要的功能,但我该如何使用它?我找不到任何例子或线索.我在PyCharm IDE中工作,这是非常可配置的.我只想每次都默默地删除测试数据库.create_test_db autoclobber
我正在测试Transaction TestCase类,setup_test_environment()然后运行Client().post(reverse(etc ..))..
我希望能够使用创建每个对象的权限django-guardian.
但我想添加一层围绕这些权限的逻辑.例如,如果某人拥有edit_booka Book的权限,那么他们Pages在该书中编辑的权限应该是隐含的.该rules包装似乎理想.
当我传递正则表达式时,我了解如何通过 Django ORM 进行 Postgresql 正则表达式搜索。当正则表达式位于数据库表中并且我传递字符串时,等效的是什么?
例如,以下 Postgresql 和 Django ORM 查询是等效的:
INSERT INTO StringValues (val) VALUES ('abc');
SELECT * FROM StringValues WHERE val ~* '^[a-z]{3}$';
# is the same as
StringValues.objects.filter(val__regex=r'^[a-z]{3}$')
Run Code Online (Sandbox Code Playgroud)
如何在 Django 中执行以下查询?
INSERT INTO StringValues (val) VALUES ('^[a-z]{3}$');
SELECT * FROM StringValues WHERE 'abc' ~* val;
Run Code Online (Sandbox Code Playgroud)
IE 正则表达式在表中,我想要与我的字符串匹配的行。
在我的具体情况下,性能不是问题 - 可能需要比较不到 100 行 - 但如果编译每个正则表达式是一个非常糟糕的主意,也欢迎对此性能的评论,谢谢。
我有一个数据框,我希望在 Python 2.7 中将几行写入文件和记录器中。print(dataframe.iloc[0:4])在数据框中输出列标题和前 4 行的漂亮网格。然而logging.info(dataframe.iloc[0:4])抛出:
UnicodeDecodeError:'ascii' 编解码器无法解码位置 87 中的字节 0xc2:序号不在范围内(128)
这是控制台的输出,可直接用于控制台或通过print()(注意²):
In[89]: d.iloc[0:4] OR print(d.iloc[0:4])
Out[89]:
ISO ID_0 NAME_0 ID_1 NAME_1 ID_2 NAME_2 Area(km.²) Pop2001_Cen Pop2010_Cen HHold2010 Hhold_Size
0 ARG 12 Argentina 2 Ciudad Autónoma de Buenos Aires NaN NaN 203.0 2776138.0 2890151 1150134.0 2.512882
1 ARG 12 Argentina 2 Ciudad Autónoma de Buenos Aires 2001.0 Comuna 1 NaN 171975.0 205886 84468.0 2.437444
2 ARG 12 Argentina 2 Ciudad Autónoma de …Run Code Online (Sandbox Code Playgroud) 命令查询责任分离/事件采购架构非常适合我正在启动的项目,每年将有大约10亿次与人们健康保险相关的金融交易.主要优势包括审计历史记录,可扩展性,在多个团队中实施异步兼容的UI,从读取数据库中分离这些事务,通过事件队列简化状态到间歇连接的现场办公室的传输,以及应对重要的业务逻辑变化整个系统的生命周期.
然而,在某些方面,CQRS/ES会出现问题,例如为1亿人分配数字ID,用户安全性,最终的一致性是不可接受的.该系统的某些区域本质上是CRUD,并且不受益于CQRS/ES.最后,我们将在不同的团队和公司中拥有大量开发人员,并且拥有不需要CQRS/ES能力的领域将是一件好事.是否有可能采用混合方法,其中某些区域不是事件来源?我们可以只在读写端同步相关表吗?
CQRS架构的聚合实体是否简化了快照缓存失效?更新可能被缓存的聚合实体的任何事件都可以由无效者监听,并且给定的聚合实体比关系实体更粗糙,我们可以区分写事件这个问题是否可以解决?
我期待每年大约有10亿个活动,需要追踪大约4年的历史.我们可以快照和存档旧事件吗?
是否有事件采购程度?例如,一个在线商店系统AddLineItem事件可能包括每单位的行项目价格,但依赖于读取方来提取和呈现发票上的产品名称.另一个在线商店可能在事件数据中包含该名称.您如何选择在活动中包含哪些内容?在健康保险中,它可能会限制"假设"分析可以运行 - 如果我们没有包括被保险人的年龄,我们就无法模拟需要它的政策?
有没有一种有趣的方式来模拟事件的事件?例如,管理员进入系统,产品的价格将在未来的某个日期发生变化.我想快照将是价格时间表.我们可以改为添加一个过时的ProductPriceChanged事件吗?我们可以在运行"假设"场景时伪造此类事件吗?(这些聚合必须很少更改,以避免版本号和并发检测问题.)
通常声称CQRS/ES使系统更容易适应未来的业务流程变化.我理解命令列出无处不在的语言中的事件使得讨论和重新配置它们更容易,并且事件源消除了RDBMS模型的一些刚性.但是,事件中的任何变化都不会打破事件的重播吗?如果系统可能会发生变化,您最终会遇到许多版本化事件吗?例如,在网上商店通过更改标准来评估客户是否是金卡持有人?你能快照一切吗?您如何约会这些变化?类似地,你必须小心依赖注入,没有注入的依赖项会影响业务逻辑,否则你会破坏重放?
知道为什么它与.NET世界有关,而在该行业的其他领域不那么受欢迎?
巨大的感谢甚至只是阅读.
python ×5
django ×4
architecture ×1
celery ×1
cqrs ×1
dataframe ×1
exception ×1
factory-boy ×1
pandas ×1
postgresql ×1
pycharm ×1
regex ×1
unicode ×1
unit-testing ×1