我有一个多处理的Web服务器,其流程永无止境,我想在实时环境中检查整个项目的代码覆盖率(不仅仅是测试).
问题是,由于进程永远不会结束,我没有一个设置cov.start() cov.stop() cov.save()钩子的好地方.
因此,我想到产生一个线程,在无限循环中将保存并组合覆盖数据然后休眠一段时间,但是这种方法不起作用,覆盖报告似乎是空的,除了睡眠线.
我很乐意收到有关如何获取我的代码的任何想法,或任何关于为什么我的想法不起作用的建议.这是我的代码片段:
import coverage
cov = coverage.Coverage()
import time
import threading
import os
class CoverageThread(threading.Thread):
_kill_now = False
_sleep_time = 2
@classmethod
def exit_gracefully(cls):
cls._kill_now = True
def sleep_some_time(self):
time.sleep(CoverageThread._sleep_time)
def run(self):
while True:
cov.start()
self.sleep_some_time()
cov.stop()
if os.path.exists('.coverage'):
cov.combine()
cov.save()
if self._kill_now:
break
cov.stop()
if os.path.exists('.coverage'):
cov.combine()
cov.save()
cov.html_report(directory="coverage_report_data.html")
print "End of the program. I was killed gracefully :)"
Run Code Online (Sandbox Code Playgroud) 我有一个分析某个网站上用户行为的代码,它使用了许多DateTime功能.现在,我想开始新的一天,3:00 am而不是12:00 am默认情况下,但我真的不想改变代码的任何其他部分.
例如:说我DateTime喜欢2014-08-27t02:59:00和我一样AddMinutes(2),日期应该改为2014-08-28t03:01:00.
有没有办法在不改变其他功能的情况下设置"新的开始"?
该任务是一个非常简单的数据分析,我使用api下载报告,它作为csv文件.我一直在尝试使用以下代码将其正确转换为DataFrame:
@staticmethod
def convert_csv_to_data_frame(csv_buffer_file):
data = StringIO(csv_buffer_file)
dataframe = DataFrame.from_csv(path=data, index_col=0)
return dataframe
Run Code Online (Sandbox Code Playgroud)
但是,由于csv中没有索引,因此数据帧忽略了我需要的第一列数据,因为它被认为是索引列.我想知道是否有办法让数据框自动插入索引列.
我有一个代表用户的序列化程序类。
class UserSerializer(BaseSerializer):
uid = serializers.IntegerField(required=True)
class Meta:
model = User
fields = "all"
def validate(self, data):
super().validate(data)
validate_user_data(data=self.initial_data, user=self.instance)
return data
Run Code Online (Sandbox Code Playgroud)
用户在 uid 上应该是唯一的,所以当收到 post 请求时,我真正想要的是将 uid 字段更改为:
uid = serializers.IntegerField(required=True, validators=[validators.UniqueValidator(queryset=User.objects.all())])
Run Code Online (Sandbox Code Playgroud)
这可能会起作用,问题是,这将触发一个 sql 查询,该查询将选择所有用户。这可能会对系统产生非常大的影响,因为它们可能有数以万计。我真正想要的是将查询更改为User.objects.get(uid=uid),这不会从数据库中选择每个用户。但是,因为我在 uid 的序列化程序定义中,所以我不能使用 uid=uid 因为 uid 刚刚被定义。