2017-09-08 15 views
0

を終了することができます。私がしたいことは、株式市場が中国で終わる5分前の14:55といった特定の時刻に毎営業日に機能を実行することです。この関数は株式市場データ供給APIからいくつかのデータを引き出し、信号を生成するための簡単な計算を行います(-1は短く、+1は短く、0は何もしないことを意味します)。私はまだ取引をするための信号を送信していません。私は毎日信号をローカルにファイルに保存しています。したがって、私は2週間、またはこのスケジューラを停止したいと思う任意の時間の信号を収集することができるかもしれません。のpythonどのように特定の時間に機能を毎日実行するには、だけでなく、私はPythonでこれを行う方法を模索する新たなんだ

私はAPSchedulerモジュールはかなり頻繁に提案されていることに気づきます。しかし、私はそれを試して、2週間後にスケジューラを停止させる方法を見つけませんでした。私は実行するために、スケジューラを設定する方法、多分10分ごとを見つけるだけで、それだけで、指定した関数ごとに10分を実行し続けるだろうとprogrammally停止することはできませんが、唯一Ctrl+Cを押して?例えば、私は、関数を6回ごとに10分を実行したい、APSchedulerに、私は「6回」引数を指定するために、とにかく表示されませんでした。または、1時間後まで10分ごとに機能を実行したい。私は「1時間後」または「16時30分に」の議論を見なかった。どうやってするの?

現在、私はそれをこのようにやっている:

def test_timer(): 
    ''' 
    Uses datetime module. 
    ''' 
    running = 1 
    stop_time = datetime.now() + timedelta(seconds=60) 
    while running: 

     print('I\'m working...') 
     time.sleep(5) 
     running = datetime.now() < stop_time 

    print('Goodbye!') 

編集:私は、Windows 10で

+1

この例を試してみてください私はあなたが正しいですが、私はおよそ@StayFoolish – Squick

+0

@Squick笑質問は 'OS'定義 – dsgdfg

+1

が含まれることはありません。クロンスタイルのスケジューリング(オプションの開始に - : しかし: 彼らのドキュメント(https://apscheduler.readthedocs.io/en/latest/)Iで見つかった: APSchedulerは、あなたが使用できる3つの組み込みのスケジューリングシステムを持っています/終了時刻) - インターバルベースの実行(オプションの開始/終了時間を、等間隔でジョブを実行します) - ワンオフ遅延実行は、(設定した日付/時刻に、一度ジョブを実行します) だから、時間を止める提供し、ではない? – Squick

答えて

0

をのpython 3.6を使用していますが、WindowsでLinuxまたはタスクスケジューラでcrontabのための問題のように見えます。

+0

mac osについて – dsgdfg

+0

crontabがMacOSにある https://ole.michelsen.dk/blog/schedule-jobs-with-crontab-on-mac-osx.html – RedEyed

0

することで、Linuxを使用している場合は簡単な方法は、あなたがそれを必要とするとき、あなたのコードを実行するために来るのcrontabを使用することです

from datetime import datetime 

from apscheduler.schedulers.background import BackgroundScheduler 


def job_function(): 
    print("Hello World") 

sched = BackgroundScheduler() 

# Schedule job_function to be called every 1 second 
# FIXME: Do not forget to change end_date to actual date 
sched.add_job(job_function, 'interval', seconds=1, end_date="2017-09-08 12:22:20") 

sched.start() 

更新#1

from apscheduler.schedulers.background import BackgroundScheduler 

def job_function(): 
    print("Hello World") 

# Here, you can generate your needed days 
dates = ["2017-09-08 13:30:20", "2017-09-08 13:31:20", "2017-09-08 13:32:20"] 
sched = BackgroundScheduler()      

for date in dates: 
    sched.add_job(job_function, "date", next_run_time=date) 

sched.start() 
+0

ありがとう、私は 'end_date'引数を追加することができませんでした。毎営業日に実行するスケジューラを指定する方法はありますか?または9回実行します。 – StayFoolish

関連する問題