标签: apscheduler

`/ usr / bin / python'中的错误:双重释放或损坏(输出):0x00007f7c3c017260

我正在使用(出色的)Flask框架在Python中开发一个网站。在后端代码中,我使用APScheduler每分钟运行一些类似于cron的作业,并且使用Numpy计算一些标准偏差。不知道这些模块的用法是否重要,但我想我最好提一下它们,因为我猜可能是最可能的原因。

无论如何,在操作过程中,Python本身似乎崩溃了,给出了以下内容:

*** Error in `/usr/bin/python': double free or corruption (out): 0x00007f7c3c017260 ***
Run Code Online (Sandbox Code Playgroud)

我可能是错的,但据我所知,这是非常严重的。所以我的问题实际上是;是什么原因导致的?如何获得有关此类崩溃的更多信息?什么(out)意思 我无法真正复制它,但是它在大约5个月内发生了4次。我在Ubuntu服务器14.04上运行标准Python 2.7

我四处搜寻,并找到了一些关于类似崩溃的讨论,其中有一件事情又回来了:并发似乎以某种方式相关(这就是为什么我使用APScheduler的原因)。

如果有人知道我该如何调试它或可能是什么原因;欢迎所有提示!

python numpy race-condition flask apscheduler

5
推荐指数
1
解决办法
3621
查看次数

如何在Windows服务中运行APScheduler ...我几乎就在那里

我正在开发一个项目,将Python APScheduler作为Windows服务运行,结果将转换为文本文件.我可以毫不费力地安装和启动服务.

我尝试了几种在服务中运行调度程序的方法,最常见且令人沮丧的结果是,当我停止服务时,调度程序的线程继续写入文本文件.我必须重新启动计算机以终止线程.

我尝试过"阻塞"和"后台"调度程序,它们的行为相同.

我已经将scheduler.shutdown()移动到不同的地方.我想将它放在服务停止功能中并让调度程序运行,直到服务收到停止命令,服务停止功能将处理关闭调度程序.

也许你可以指出我正确的方向?以下是清理过的代码,以确保您不必重新启动计算机.

import win32serviceutil
import win32service
import win32event
import servicemanager
import socket
import time
import logging
import configparser
import os

from datetime import datetime
from mysql.connector import errorcode
from apscheduler.schedulers.background import BackgroundScheduler

global FILEPATH
global SERVICE

#Define constants
FILEPATH = os.path.dirname(os.path.realpath(__file__))
SERVICE = 'service.log'

logging.basicConfig(
    filename = '%s\\%s' % (FILEPATH, SERVICE),
    level = logging.DEBUG, 
    format = '[Logging Service] %(levelname)-7.7s %(message)s'
)


def hi(text):
    logging.info(text)
    return

class HelloWorldSvc (win32serviceutil.ServiceFramework):
    _svc_name_ = "Logging-Service"
    _svc_display_name_ = "Logging Service"
    _svc_description_ …
Run Code Online (Sandbox Code Playgroud)

windows service multithreading python-3.x apscheduler

5
推荐指数
1
解决办法
988
查看次数

APScheduler选项

我正在尝试使用Advace Python Scheduler以编程方式安排一些工作,我的问题是在文档中只提到如何使用'interval'触发器类型进行调度,如何'cron'和'date'.是否有关于APScheduler调度选项的完整文档?

例如:

#!/usr/bin/env python

from time import sleep 
from apscheduler.scheduler import Scheduler

sched = Scheduler()
sched.start()        

# define the function that is to be executed
def my_job(text):
    print text

job = sched.add_job(my_job, 'interval', id='my_job', seconds=10, replace_existing=True, args=['job executed!!!!'])

while True:
        sleep(1)
Run Code Online (Sandbox Code Playgroud)

我如何根据'日期'或'cron'安排

我正在使用最新的APScheduler 3.0.2版

谢谢

python apscheduler

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

Python 3 - 带有 AsyncIO/APScheduler 的全局变量

已经为此苦苦挣扎了一段时间。

基于此线程:在函数中使用全局变量而不是创建它们的函数

我应该能够通过在特定时间安排任务来更新 thread_2 使用的变量。

编码:

import asyncio
from concurrent.futures import ProcessPoolExecutor
from apscheduler.schedulers.asyncio import AsyncIOScheduler
from datetime import datetime
import time


def day_limits():

        global variable
        variable = 90
        print ('Day Variable: ',variable)

def night_limits():

        global variable
        variable = 65
        print ('Night Variable: ',variable)


def thread_2():


    while True:

        c_hour = int(datetime.now().strftime("%H"))
        c_min = int(datetime.now().strftime("%M"))
        c_sec = int(datetime.now().strftime("%S"))

        print ('%02d:%02d:%02d - Variable: %d ' % (c_hour,c_min,c_sec,variable))

        time.sleep(2)


if __name__ == "__main__":

    variable = 60

    scheduler = AsyncIOScheduler()
    scheduler.add_job(day_limits, 'cron', hour=7,misfire_grace_time=3600,timezone='GB') …
Run Code Online (Sandbox Code Playgroud)

python global global-variables apscheduler python-asyncio

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

如何在现有的Flask应用程序中使用Flask-APScheduler

我试图通过以下示例代码熟悉Flask-APScheduler插件:https://github.com/viniciuschiele/flask-apscheduler/blob/master/examples/jobs.py#L1

我的项目有以下结构:

backend
    run.py
    application
        __init__.py
        utilities
            __init__.py
            views
            models
Run Code Online (Sandbox Code Playgroud)

哪里,

backend>run.py 是:

from application import app
app.run(debug=True)
from application import scheduler
scheduler.start()
Run Code Online (Sandbox Code Playgroud)

backend>application>__init__.py 是:

from flask import Flask
app = Flask(__name__)
from application.utilities.views import Config
from flask_apscheduler import APScheduler
app.config.from_object(Config())
scheduler = APScheduler()
scheduler.init_app(app)
Run Code Online (Sandbox Code Playgroud)

backend>application>utilities>__init__.py 是空的

backend>application>utilities>models.py 是空的

backend>application>utilities>views.py 是:

class Config(object):
    JOBS = [
        {
            'id': 'job1',
            'func': 'application:utilities:views:job1',
            'args': (1, 2),
            'trigger': {
                'type': 'cron',
                'second': 10
            }
        }
    ]

def job1(a, b):
    print(str(a) …
Run Code Online (Sandbox Code Playgroud)

flask apscheduler

5
推荐指数
1
解决办法
6825
查看次数

APScheduler - 作业未执行

我是 APScheduler 的新手,并在在更大范围内实施之前对其进行了测试。

我已经创建了下面的代码,但是当我将 add_job 与trigger='date'. 如果我使用trigger='interval',那么一切正常。

我也尝试玩run_dateparam ,但没有运气。

知道什么可能是错的吗?

Apscheduler 版本为 3.0.3

提前谢谢了 :)

def my_listener(event):
    if event.exception:
        print('The job crashed :(')
    else:
        print('The job worked :)')

def test():
    print("{}  ok ".format(datetime.now()))


def myFunc(content, img):
    print("{} - content={}|image{}".format(datetime.now(), content, img))
    myfile = open("scheduler.log", "a")
    myfile.write("{} - content={}|image{}".format(datetime.now(), content, img))
    myfile.close()

def main():
    jobstores = \
        {
            'default': SQLAlchemyJobStore(url="postgresql+psycopg2://{}:{}@{}:{}/{}".format(db_user, db_password, db_host, db_port, db_database))
        }

    executors = \
        {
            'default': ThreadPoolExecutor(20),
            'processpool': ProcessPoolExecutor(5)
        }

    job_defaults …
Run Code Online (Sandbox Code Playgroud)

apscheduler

5
推荐指数
1
解决办法
1520
查看次数

python:WSGI 应用程序中的 APScheduler

我想运行 APScheduler,它是 WSGI(通过 Apache 的 modwsgi 和 3 个工人)webapp 的一部分。我是 WSGI 世界的新手,因此如果您能解决我的疑问,我将不胜感激:

  1. 如果 APScheduler 是 webapp 的一部分 - 它在至少由一个工作人员运行的第一个请求(首先在启动/重置 Apache 之后)之后变得活跃?启动/重置 Apache 不会启动它 - 至少需要一个请求。

  2. 并发请求怎么样——每个工作人员会运行相同的一组 APScheduler 的任务,还是只有一组在所有工作人员之间共享?

  3. 一旦运行进程(通过工作程序运行的 webapp)保持活动状态(因此 APScheduler 的任务将执行),或者它可能会在一些空闲时间后终止(因此 - APScheduler 的任务不会执行)?

谢谢!

python mod-wsgi wsgi apscheduler

5
推荐指数
1
解决办法
912
查看次数

由于实例数量过多,Apscheduler跳过作业执行

我尝试使用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

5
推荐指数
0
解决办法
2040
查看次数

Apscheduler 多次执行作业

我有一个使用 uwsgi(有 10 个工人)+ ngnix 运行的 django 应用程序。我正在使用 apscheduler 进行调度。每当我安排一项工作时,它都会被多次执行。从这些答案ans1ans2我了解到这是因为调度程序是在uwsgi 的每个工作人员中启动的。我通过按照本答案中的建议将调度程序绑定到套接字并在数据库中保持状态来对调度程序进行有条件的初始化,以便仅启动一个调度程序实例,但仍然存在相同的问题,有时在创建时也存在发现调度程序未运行的作业并且该作业保持挂起且未执行。

我正在使用以下代码在 django 应用程序的 url 中初始化 apscheduler。这将在应用程序启动时启动调度程序。

def job_listener(ev):
    print('event',ev)


job_defaults = {
    'coalesce': True,  
    'max_instances': 1
}

scheduler = BackgroundScheduler(job_defaults=job_defaults, timezone=TIME_ZONE, daemon=False)
scheduler.add_jobstore(MongoDBJobStore(client=client), 'default')
scheduler.add_executor(ThreadPoolExecutor(), 'default')
scheduler.add_executor(ProcessPoolExecutor(),'processpool')
scheduler.add_listener(job_listener)


def initialize_scheduler():
    try:
        if scheduler_db_conn.find_one():
            print('scheduler already running')
            return True
        scheduler.start()
        scheduler_db_conn.save({'status': True})
        print('---------------scheduler started --------------->')
        return True
    except:
        return False
Run Code Online (Sandbox Code Playgroud)

我使用以下代码来创建作业。

from scheduler_conf import scheduler
def create_job(arg_list):
    try:
        print('scheduler status-->',scheduler.running)
        job = …
Run Code Online (Sandbox Code Playgroud)

django uwsgi apscheduler

5
推荐指数
1
解决办法
5453
查看次数

APScheduler 随机关闭

调度程序在生产中运行良好,然后突然关闭。显然,DB 可能已经离线了一段时间(网络应用程序从未错过任何一个节拍,因此它是短暂的)。

日志报告...

[2019-11-25 07:59:14,907: INFO/ercscheduler] Scheduler has been shut down
[2019-11-25 07:59:14,908: DEBUG/ercscheduler] Looking for jobs to run
[2019-11-25 07:59:14,909: WARNING/ercscheduler] Error getting due jobs from job store 'default': (psycopg2.OperationalError) could not connect to server: Network is unreachable
        Is the server running on host "localhost" (127.0.0.1) and accepting
        TCP/IP connections on port 6432?

(Background on this error at: http://sqlalche.me/e/e3q8)
[2019-11-25 07:59:14,909: DEBUG/ercscheduler] Next wakeup is due at 2019-11-25 13:59:24.908318+00:00 (in 10.000000 seconds)
[2019-11-25 07:59:14,909: INFO/ercscheduler] listener closed
[2019-11-25 07:59:14,909: …
Run Code Online (Sandbox Code Playgroud)

python apscheduler

5
推荐指数
1
解决办法
552
查看次数