我尝试使用APScheduler通过IntervalTrigger运行定期作业,我故意将正在运行的实例的最大数量设置为一个,因为我不希望作业重叠。
问题是,经过一段时间后,调度程序开始报告该作业的最大运行实例数,即使它先前已通知该作业已成功完成,但我在日志中发现了这一点:
2015-10-28 22:17:42,137 INFO Running job "ping (trigger: interval[0:01:00], next run at: 2015-10-28 22:18:42 VET)" (scheduled at 2015-10-28 22:17:42-04:30)
2015-10-28 22:17:44,157 INFO Job "ping (trigger: interval[0:01:00], next run at: 2015-10-28 22:18:42 VET)" executed successfully
2015-10-28 22:18:42,335 WARNING Execution of job "ping (trigger: interval[0:01:00], next run at: 2015-10-28 22:18:42 VET)" skipped: maximum number of running instances reached (1)
2015-10-28 22:19:42,171 WARNING Execution of job "ping (trigger: interval[0:01:00], next run at: 2015-10-28 22:19:42 VET)" skipped: maximum number of running instances reached …Run Code Online (Sandbox Code Playgroud) python subprocess threadpool python-multithreading apscheduler
问题:有没有办法将任何额外信息传递给 sequelize 日志记录功能?
为什么我需要这个:
我的应用程序需要记录每个查询并获取经过的时间,问题是使用 sequelize 内置benchmark: true选项仅在查询返回后记录查询,我希望能够为每个查询记录两条消息,例如:
2016-12-23 16:25:57.152 QUERY #A0E92A247 Executing SELECT * FROM foo;
2016-12-23 16:25:57.177 QUERY #A0E92A247 ELAPSED 25ms
Run Code Online (Sandbox Code Playgroud)
我当前的代码结果是这样的:
2016-12-23 16:25:57.152 QUERY #A0E92A247 STARTED
2016-12-23 16:25:57.153 QUERY Executing (default): SELECT * FROM foo;
2016-12-23 16:25:57.177 QUERY #A0E92A247 ELAPSED 25ms
Run Code Online (Sandbox Code Playgroud)
问题在于,在具有多个查询同时运行的高度异步系统中,很难知道哪些查询被卡住了。
我试图从表中检索最后 n 小时的行并在给定的时区打印它们的日期时间,给出打印日期时使用的时区,我试图使用 activate 使 django 返回具有正确时区的日期时间,但它以 UTC 形式返回日期。
这是我当前的代码:
min_time = datetime.datetime.now(link.monitor.timezone) - datetime.timedelta(hours=period)
timezone.activate(link.monitor.timezone)
rows = TraceHttp.objects.values_list('time', 'elapsed').filter(time__gt=min_time,link_id=link_id,elapsed__gt=0)
array = []
for row in rows:
array.append((row[0].astimezone(link.monitor.timezone),row[1]))
Run Code Online (Sandbox Code Playgroud)
我想避免使用 astimezone 函数并让 Django 为我做这件事,有时我会错过 activate 函数吗?
编辑
这是我的模型,您可以看到要显示的时区保存在“监视器”模型中:
class Link(models.Model):
...
monitor = models.ForeignKey(Monitor)
...
class Monitor(models.Model):
...
timezone = TimeZoneField(default='Europe/London')
class TraceHttp(models.Model):
link = models.ForeignKey(Link)
time = models.DateTimeField()
elapsed = models.FloatField()
Run Code Online (Sandbox Code Playgroud) python ×2
apscheduler ×1
datetime ×1
django ×1
logging ×1
node.js ×1
sequelize.js ×1
subprocess ×1
threadpool ×1