问题标签 [apscheduler]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 具有 cron 任务的 uwsgi Web 应用程序?
我使用 webpy (webpy.org) 编写了一个应用程序。此 Web 应用程序的一部分是统计功能的重复后台任务。我使用APScheduler
python 库来执行 cron 样式的计划。因为app.run()
在开发过程中让 webpy 以独立模式运行。这个设置效果很好。
但是,当它部署时,我发现 APScheduler 不再起作用。部署过程几乎遵循这篇文章。我的入口点程序仍然打印成功的调度日志。但似乎 uwsgi 在没有收到请求时会挂起正在运行的 webpy 应用程序(使线程挂起)。如果我刷新一个页面,APScheduler 会唤醒,打印一些WARNING:apscheduler.scheduler:Run time of job "worker (trigger: cron[...], next run at: ..)" was missed by 0:04:36.389705
消息。他们没有按计划运行。
我的问题是,在部署 uwsgi webpy 应用程序时如何安排 cron 样式的任务。我看到 uwsgi 本身有 cron 支持。但我想知道如何将它与我的应用程序混合使用,比如 APScheduler(或替换它)?这些任务取决于应用程序的一些模块和动态属性,因此它们不能轻易转换为独立的 .py 程序。
python - NameError:未定义全局名称“create_engine”[尝试创建 SQLAlchemyJobStore 时]
我正在尝试添加一个SQLAlchemyJobStore
工作商店(并使其成为default
工作商店)并在其上存储一些工作。我正在运行mysql
它有一个名为jobstore
.
我有以下程序试图打开一个SQLAlchemyJobStore
作业存储到mysql
正在运行的数据库:
尝试运行上述代码时,我看到以下内容:
我明白"/usr/lib/python2.7/site-packages/APScheduler-2.1.0-py2.7.egg/apscheduler/jobstores/sqlalchemy_store.py"
了,它__init__
正在尝试create_engine
并且它失败了。
这里出了什么问题?!换句话说,我如何创建一个SQLAlchemyJobStore
usingAPScheduler
并成功地将作业存储在它们上面?任何示例/代码片段都会有很大帮助!
python - 无法向 add_date_job() 添加方法以将作业存储在 SQLAlchemyJobStore 作业存储中
问题陈述:
我正在尝试添加一个方法 ( Test::start()
),scheduler.add_date_job()
该方法被配置为将作业存储在SQLAlchemyJobStore
作业商店中。将作业添加到作业存储成功。但是当我尝试启动调度程序时,obj_to_ref
(in apscheduler/util.py
) 无法获取ref_to_obj()
给定对象的 [在这种情况下,给定对象是Test::start()
- 换句话说,<bound method Test.start of <__main__.Test instance at 0xa119a6c>>
]。
但是在以下情况下,相同的操作可以正常工作:
- 其他作业存储(fe
RAMJobStore
- 这是未添加/配置作业存储时的默认设置)。 - 当
scheduler.add_date_job()
使用其他函数(func
下面代码中的 fe)而不是像Test::start()
(作业商店是SQLAlchemyJobStore
)[theref_to_obj()
andobj_to_ref()
forfunc
is<function func at 0xb768ed14>
] 之类的方法调用时。我添加了一些调试(在 中apscheduler/util.py
)以确认相同。
代码如下:
堆栈跟踪如下:
我添加的调试apscheduler/util.py
如下:
以下是 的调试打印Test::start()
:
将 更改scheduler.add_date_job()
为function
(fe func
) 而不是method
(fe Test::start()
)
以下是 的调试打印func()
:
我在这里做错了吗?还是这是apscheduler/util.py
函数 wrt中的错误SQLAlchemyJobStore
?
任何已知的解决方法?!
python - Flask 中的 apscheduler 执行两次
我在烧瓶应用程序中使用 apscheduler 时遇到问题。
在我的 view.py 文件中,我这样写
然后这个方法 test_scheduler() 每五秒执行两次
测试 1360844314.01 测试 1360844314.2
python - 方法的文本参考
说我有以下内容:
我有以下功能(取自https://bitbucket.org/agronholm/apscheduler/src/d2f00d9ac019/apscheduler/util.py):
上述函数 -obj_to_ref
返回给定函数对象的文本引用,并ref_to_obj
返回给定文本引用的对象。例如,让我们试试这个func
功能。
该func
功能工作正常。但是当尝试在 的实例上使用这些函数时class Test
,它无法获得文本引用。
obj_to_ref
给定输入的函数以文本表示形式t.TestFunc
出现,__main__:Test.TestFunc
但不能使用相同的文本生成对象。
问题:
有没有一种方法Python
可以表示一个像
在字符串中并从字符串中重建对象?
如果我们将地址保存0xb771b28c
为字符串的一部分并通过取消引用该地址来重新生成对象,是否有可能?!
python - 如何在某些情况下停止 python Apscheduler
实际上我正在尝试一个示例中的python APScheduler
我添加的调度程序如下
但是此调度程序每1 分钟启动一次并调用函数f,如何停止调度程序调用此函数,如果它们在 dict 中没有状态为“n”的条目,以及如果它们是状态为“n”的条目,如何继续此调度程序调用字典 d。
python - python脚本高级调度
我正在尝试做一些非常复杂的事情。使用 Windows 框,我试图让脚本每半小时运行一次,周一至周五,上午 9:00 至下午 7:00,跳过我定义为“假期”的某些日期。我希望 Python 自己运行这个脚本。我已经查看了“apschedule”,但似乎找不到我需要执行此操作的正确选项。如果无法通过 Python 做到这一点,我还能查看哪些其他解决方案?
顺便说一句,截至目前,我正在运行 Python 3.3,但如有必要,我愿意降级。
django - 确保只有一个工作人员在运行多个工作人员的金字塔网络应用程序中启动 apscheduler 事件
我们有一个用金字塔制作的网络应用程序,并通过 gunicorn+nginx 提供服务。它适用于 8 个工作线程/进程
我们需要工作,我们选择了调度程序。这是我们启动它的方式
问题是 gunicorn 的所有工作进程都选择了调度程序。我们尝试实现文件锁定,但它似乎不是一个足够好的解决方案。确保在任何给定时间只有一个工作进程选择预定事件并且没有其他线程在下一个之前选择它的最佳方法是什么JOB_INTERVAL
?
如果我们决定稍后切换到 apache2+modwsgi,该解决方案甚至需要使用 mod_wsgi。它需要与作为服务员的单进程开发服务器一起使用。
来自赏金赞助者的更新
我面临着 OP 描述的相同问题,只是使用 Django 应用程序。如果原始问题,我很确定添加此细节不会有太大变化。出于这个原因,为了获得更多的可见性,我还用 标记了这个问题django
。
python - 如何将 Tornado 与 APScheduler 一起使用?
我正在运行 pythonapscheduler
并定期希望对一些 http 资源进行 POST 处理,这将涉及使用 tornadoAsyncHttpClient
作为计划作业。每个工作都会做几个 POST。当每个 http 请求响应时,就会调用一个回调(我认为 Tornado 使用 afuture
来完成此操作)。
我在这里关心线程安全,因为Apscheduler
在各种线程中运行作业。我还没有找到一个解释清楚的例子,说明在这种情况下如何最好地跨多个线程使用龙卷风。
我怎样才能以这种方式最好地使用apscheduler
with tornado
?
具体问题:
使用哪个龙卷风 ioloop?文档说
AsyncHTTPClient
“像魔术一样工作”。好吧,魔法吓到我了。我需要AsyncHTTPClient
在当前线程中使用还是可以使用主线程(可以指定)?关于我使用的 ioloop,我的回调是否存在线程安全问题?
我不清楚当一个线程完成时会发生什么,但仍有一个待处理的回调/未来需要被调用。这里有问题吗?
由于 apscheduler 是作为进程内线程运行的,而 python 具有 GIL,那么从主线程拥有一个 IOLoop 与来自不同线程的多个循环(就性能而言)相反吗?